const 跟 var 的区别
const声明的时候可以使用大小写,但通常情况下全部用大写字母;
const声明同时必须初始化值,否则会报“Uncaught SyntaxError: Missing initializer in const declaration”错误;
const声明创建的常量,其作用域可以是全局或本地声明的块。 与var变量不同,全局常量不会变为窗口对象的属性;
常量是块级作用域,这意味着可在不同块级作用域下定义同名的常量,这点很像使用 let 语句定义的变量。但常量的值在同一块级作用域下不能通过重新赋值来改变,并且不能重新声明,否则会报“Uncaught SyntaxError: Identifier 'MY_FAV' has already been declared”错误;
常量可以定义成对象/数组,可以修改该对象/数组的元素属性值,但不能重写整个对象/数组,否则会报“Uncaught TypeError: Assignment to constant variable”错误
参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/const
let 跟 var 的区别
let有块级作用域,即let声明的变量只在其声明的块或子块中可用,可选的将其初始化为一个值,而var声明的变量的作用域是整个封闭函数;
与const一样,在全局执行环境下,let并不会像var一样在全局对象上创造一个属性,如:
var x = 'global'; let y = 'global'; console.log(this.x); // "global" console.log(this.y); // undefined
同一块级作用域内不能重复使用let定义同一个变量名
在 ECMAScript 2015 中,let 绑定不受变量提升的约束,这意味着 let 声明不会被提升到当前执行上下文的顶部,在块级作用域中let变量初始化前调用会存在“暂存死区(暂时性死区)”之中,在初始化之前引用会报“Uncaught ReferenceError: xxx is not defined”
循环体中是可以引用在for声明时用let定义的变量,尽管let不是出现在大括号之间
参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let
0条评论( 网友:0 条,站长:0 条 ) 网友评论{有您的评论更精彩....}