批改状态:合格
老师批语:
// 声明一个变量let num = 5;console.log(num); //返回数值5num = 8;console.log(num); //返回数值8 ,说明变量随时可以改变的// 声明一个常量const USERNAME = "admin";console.log(USERNAME); //返回 admin// 说明变量声明用let,声明后随时可改变,常量声明时必须赋值,一旦声明无法改变
原始类型 number string boolean defined null
三个最常用的 number string boolean
这5种数据具有单值不可再分
引用类型 array object funtion
数组[]使用成员的索引来访问,默认从0开始 数组成员可以是任何类型
对象{}和数组很像,索引是一个字符串或标识符,使用的是点语法
当属性使用了非法字符串,必须转为字符串
let data = "box";console.log(typeof data); //查看类型//数组const prices = [69, 86, 59, 23, 52];console.log(prices);console.log(prices[0], prices[1]);//对象const item1 = {//属性 变量name: "笔记本",num: 6,pirice: 699,};console.table(item1);console.log(item1.name, item1.num);const item2 = {"my name": "充电报",num: 9.9,};console.log(item2["my name"]);// 实际工作中 数组和对象结合const item3 = [{ name: "笔记本", num: 6, pirice: 699 },{ name: "笔记本", num: 6, pirice: 699 },];console.table(item3);
函数种类: 普通函数 匿名函数 闭包函数
参数类型:实际参数(调用参数)形式参数
function sum1(num1, num2) {let total = 0;total = num1 + num2;console.log("total = ", total);}sum1(12, 34);// (num1, num2) 形式参数// (12, 34) 调用参数 实际参数console.log("--------");// 参数不足,设置默认参数function sum2(num1, num2 = 0) {let total = 0;total = num1 + num2;console.log("total =", total);}sum2(20);console.log("--------");//rest 归并参数function sum3(...args) {console.log(args);}sum3(256, 552, 25, 95, 85, 10);console.log("--------");function sum4(...args) {console.log("total =",args.reduce((p, c) => p + c));}sum4(256, 552, 25, 95, 85, 10);console.log("--------");const arr = [256, 552, 25, 95, 85, 10];sum4(...arr);//...用再形参中,归并操作 rest//...调用参数中,扩展操作 spreadconsole.log("--------");//匿名函数 一次性的 立即执行函数// function(a,b){// console.log(a+b);// }(10,50);//如果匿名函数不是一次性的let add = function (a, b) {console.log(a + b);};add(40, 50);// 使用箭头函数来简化匿名函数表达式add = (a, b) => {return a + b;};console.log(add(10, 50));// 如果行数代码只有一行 省去{}// 参数只有一个,()可以去掉//没有参数 ()不能省去add = (a, b) => return a + b;console.log(add(70, 50));add = a => return a + 50;add = ( => return 10+5;
//作用域分为全局作用域,函数作用域,块作用域{let a = 1;// 块作用域只能在块里面访问 if for whileconsole.log(a);}//全局作用域//函数外 全局作用域\let name = "xiaoming";function demo() {//函数作用域let name = "xiaohong";console.log(name);//函数内部可以调用函数外作用域}demo();//name 先在函数内部查询,如果有直接访问,如果没有,向上一个作用域查询,直到全局//作用域链 查询变量 是单向的,由外向内传递 由内向外禁止
//作用域分为全局作用域,函数作用域,块作用域{let a = 1;// 块作用域只能在块里面访问 if for whileconsole.log(a);}//全局作用域//函数外 全局作用域\let name = "xiaoming";function demo() {//函数作用域let name = "xiaohong";console.log(name);//函数内部可以调用函数外作用域}demo();//name 先在函数内部查询,如果有直接访问,如果没有,向上一个作用域查询,直到全局//作用域链 查询变量 是单向的,由外向内传递 由内向外禁止//闭包 :两个条件 1、具有父子函数 2、自由变量function parent(a) {//a 是子函数f的自由变量function f(b) {// b 外围参数let c = 6; //c私有变量 bc都是当前函数自有的return a + b + c;}return f;}//调用parent 返回一个函数console.log(parent(8));let f1 = parent(8);console.log(f1(9));console.log("---------");//parent 调用结束 应该释放掉 ,但是a被子函数f引用,所以父函数不能销毁//就产生了闭包,代码中闭包太多消耗内存//经典应用 点赞 通常与iife 立即执行函数配合let counter = (function (n) {//n 是自由变量 不属于子函数return function () {// 外部参数和自己声明的变量return n++;};})(56);console.log(counter());console.log(counter());console.log(counter());
let name = "xiaoming";let user = {//name:"xiaoming",//name:name,name,};console.log(user.name);// 两个条件:1/对象属性和变量处于同一个作用域// 2 对象属性和变量同名//方法的简化user = {name,getInfo() {// 将: function 去掉//尽量不要用箭头函数简化,除非不要碰到thisreturn "我是 " + user.name;},};console.log(user.getInfo());// thislet mobile = {name: "iPhone 13",getInfo() {// 将: function 去掉//尽量不要用箭头函数简化,除非不要碰到thisreturn mobile.name;},};let mobile2 = {name: "iPhone 13",getInfo() {// this 是mobile2的引用// this=mobile2; 是假想代码return this.name;},};
console.log("0001");let a = 10,b = 20;//${}插值占位符,可以将变量表达式嵌入到字符中let res = `${a}+${b}=${a + b}`;console.log(res);//let long = `csshtmljs`;console.log(long);//标签函数 使用模板字符串为参数的函数// alert`hello ${10} ${20}`;//console.log`hello ${10} ${20} ${30} world`;// 标签函数 第一个参数是数组,第二个是插值表达式//function total(num, price) {console.log(num * price);}total(10, 20);function total2(string, num, price) {//console.log(num * price);let res = `${string[0]}${10}${string[1]}${90},总金额 ${num * price} 元`;console.log(res);}total2`数量:${10} 单价:${90}`;// 模板字符串中的参数占位符很多,可以哦那个rest进行归并sum`计算多个数之和:${5}${6}${6}${8}${9}${7}`;function sum(strings, ...args) {console.log(`${args.join()}之和是 ${args.reduce((p, c) => p + c)}`);}//标签字符串就是在模板字符串前加了标签
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号