JavaScript 严格模式(use strict)
严格模式下你不能使用未声明的变量。
const c1 = 1; const c2 = {}; const c3 = [];
不能对c1的值进行再次的赋值;
也不能在对c2,c3进行赋值,但是可以改变c2的内容,因为c2是个对象,看例子
c2.p1 = 1; console.log(c2.p1)打印出来结果为1 同样,也可以往c3中添加元素,因为c3是个数组。
const声明的变量与let声明的变量类似,它们的不同之处在于,const声明的变量只可以在声明时赋值,不可随意修改,否则会导致语法错误
例如 const a=1; a=12; 这样会报错
同样 const a=0; a++;在use strict下一样会报错
声明不赋值同样报错,const a; 报错
let a=0; a++;可以被执行; let a=0; a=12;可以被执行
let a=0; let a=12; 报错
有区别于var在于他们存在块级作用于,就是你声明的变量只作用于某个域,比如一个函数,而不是全局,从上面也可以看出let 为变量 const为常量
下面在具体举例说明
1.let声明的变量只在变量声明时所在的代码块内有效
对比: { var url = "www.baidu.com"; } alert(url); //-------------------------------- { let url = "www.baidu.com"; } alert(url);
2.let不允许在同一作用域重复声明变量:
let url = "www.baidu.com"; // 第一次 { let url="www.sina.com.cn"; //第二次
console.log(url);
} // 第一次正确,第二次放到括号里面错误
3.let与全局变量的声明
//错误 let a=3; { var a=5; } alert(a); //正确 var a=3; { let a=5; } alert(a);
4.作用到子作用域
let a=3; { a=5; //子作用域 } alert(a); //弹出5
二、const命令
const命令用来生成一个常量,常量被声明后,值无法改变。其他与let相同。
const一旦定义,无法更改,let定义块级变量,他们都是无法重复声明的,会报错,而var可以覆盖之前的声明