1.let 、const
关于定义(声明)变量:
之前:
var a = 12;
let a = 10;
作用域:
全局作用域
函数作用域
let 相当于之前的var
const 常量,定义好了不能改变
let注意:
1.没有预解析,只要let定义变量,在之前使用,都是报错(TDZ暂时性死区)
先定义完,再使用
2.不能重复定义变量
3.for循环,for循环里面是父级作用域,里面又一个
for(let i= 0;i<3;i++){
let i = 'abc';
console.log(i);//abc 3遍
}
类似
{
let i= 1;
{ let i= 5; }
alert(i); //1
}
块级作用域:
{
//块级作用域
}
if(){XX}
for(){}
while(){}
之前的块级作用域的实现:IIFE立即执行函数
(function(){
//todo
})()
const: 特性和let一样
cosnt定义变量不能修改
const定义完变量,必须有值,不能后赋值,不能修改
const arr =['apple','banana'];
arr.push('orange');
console.log(arr);//['apple','banana','orange'];
若使用Object.freeze(对象);
const arr = Object.freeze(['apple','banana']);
arr.push('orange');
console.log(arr);
报错:Uncaught TypeError:Cannot add property 2,object is not extensible at Array.push(<anonymous>) at xxx.html:xx
const config = {
host :'localhost',
username:'jy'
}
config.host = '192.168.1.104';//可修改
const config = false;//会报错