多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[toc] ### 1. 以字面量的方式创建一个数组 * 用字母数字下划线$租车 * 不能用数字开头 ``` var arr = [1, 2, 3]; ``` ### 2. 声明提前 声明提前,先将所有声明的变量,集中到作用域的顶部集中创建,赋值留在原地 ``` console.log(a); var a = 10; //undefined,但不是报错 //undefined: 未赋值但却声明的变量 //在es6中没有声明提前,es6中用'let'声明 ``` let 没有声明提前 ```js { me = 'x' // 暂时性死区报错 let me } ``` ### 3. 严格模式 js声明一个变量,可以不适用var关键字,执行自动补全 ``` b = 20; console.log(b); //使用严格模式必须使用var关键字 'use strict'; b = 20; console.log(b); ``` ### 4. 全局变量和局部变量 1. 全局变量:在函数外面声明的变量 作用范围:整个window 2. 局部变量:在函数内部声明的变量 作用范围:函数内 3. 在函数内部,声明的变量如果没有使用`var`关键字,则会识别为全局变量 ### 5. 解构赋值 当赋值结构两边一致时,可多项赋值 ``` let [a, b] = [1, 2]; console.log(a, b); //1, 2 ``` ### 6. 三种声明方式区别 ``` 1.在功能上,var 和 let 声明的都可以修改,const 声明的基本类型不可修改,引用类型内部可修改(但是在浏览器控制台不可修改) 2.在块级作用域上,let和const有块级作用域,var没有,所以用var进行for循环,会导致结束后的i值对外界造成影响 3.在声明提前上:var会有声明提前,const 和 let 不会 4.在顶层作用域上用var声明对象,比如控制台中,对象是直接挂载到window上的,但是let和const是在一个块级作用域中 ``` #### let 1. 块作用域 2. 比`var`更适合for循环,因为var会导致for循环结束后i的值对外界造成印象 3. 不会让变量预先声明,导致出现`undefined` #### var 1. 没有块级作用域 2. 会预声明 #### const 1. 常量,无法改变 2. 块级作用域 #### 7.var没有块级作用域,会跳出{}外 ``` { var a = 10 } console.log(a); // 10 { let b = 5 console.log(b, '块级内'); } console.log(b, '块级外'); // 报错 ``` #### 8.var 和let都存在函数作用域 函数内,除非不用var声明,不然不会覆盖外层变量 ``` var c = "函数外"; function test() { var c = "函数内"; // 内部不会覆盖外部 } test(); // console.log(c); // 报错 var d = "函数外d"; function test2() { d = "函数内d"; // 内部会覆盖外部 } test2(); console.log(d); ```