1.var var 声明的变量为全局变量,并会进行变量提升:也可以只声明变量而不进行赋值,输出为undefined,以下写法都是合法的. var a var a = 123 2.let let 声明的变量为局部变量,用于块级作用域,使用前必须进行先声明:不会进行变量提升:声明变量以后不能够在同一作用域进行重复声明变量,会报错. 3.const const 声明变量的要求在 let 基础上增加,声明的的变量值不能够变更,所以要求使用前必须声明并赋值,否则会报错. 总结: var > let >…
先看let和var: 1. console.log(a); // undefined var a = 3; console.log(a); // Uncaught ReferenceError: Cannot access 'a' before initialization let a = 3; 在当前代码执行之前,首先会把所有带var关键字的进行声明(带function关键字的也会提前声明并且定义),即所谓的变量提升,let则不存在这种情况. ps:项目中创建函数,一般都是基于函数表达式来…
let的含义及let与var的区别: let 声明的变量只在它所在的代码块有效: 如下: for (let i = 0; i < 10; i++) { console.log(i); } console.log('aaa'); console.log(i); // i is not defined 上面代码中,计数器i只在for循环体内有效,在循环体外引用就会报错.如下var代码: var a = []; for (var i = 0; i < 10; i++) { a[i] = functi…
1. 变量提升: 浏览器在运行代码之前会进行预解析,不论var声明的变量处于当前作用域的第几行,都会提升到作用域的头部. 2. 只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响. 3. let不允许在相同作用域内,重复声明同一个变量. var a = 10; let a = 6; var a = 20; let a = 8; console.log(a);//20 co…
var 如果使用关键字 var 声明一个变量,那么这个变量就属于当前的函数作用域,如果声明是发生在任何函数外的顶层声明,那么这个变量就属于全局作用域. let 1.let 声明的变量具有块作用域的特征. 2.在同一个块级作用域,不能重复声明变量. function foo(){ let a = 1; let a = 2;//Uncaught SyntaxError: Identifier 'a' has already been declared } 3.let 声明的变量不存在变量提升,换一种…
简述: 1.前端的变量申明,可以用到var,ES6的const(衡量)/let(变量) 2.在ES5用的都是var,到ES6之后,也就是2015年开始出现const/let. var 不会报错,有声明提升,会显示undefined(一个变量未初始化): function show(falg){ // var a;//**声明提升,初始化为undefined,函数体(作用域)的最前排 console.log(a);//undefined if(falg){ var a ="111"; c…
var let const 都是来定义变量的. var let 作用域有些区别. const 类似于java中的常量的概念.即:只能给一个变量赋值一次,即指定一个引用. 举例来说: function test(){ var i=1; console.log(i); console.log(j); var j=2; } test(); console.log(i); 可以预计第一个输出 1 ,第二个输出 undefined,第三个输出0: 如果用let 取代 var function test()…
var.let.const的区别 var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问. const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改. <script type="text/javascript"> // 块作用域 { var a = 1; let b = 2; const c = 3; // c = 4; // 报错 var aa; let…