1.let 萝衩、const
關(guān)于定義(聲明)變量:
? ? 之前:
? ? ? ? var a = 12;
? ? ? ? let a = 10;
作用域:
? ?全局作用域
? ?函數(shù)作用域
let? ? ? ?相當(dāng)于之前的var
const? ?常量,定義好了不能改變
let注意:
? 1.沒(méi)有預(yù)解析,只要let定義變量,在之前使用,都是報(bào)錯(cuò)(TDZ暫時(shí)性死區(qū))
? ? 先定義完,再使用
? 2.不能重復(fù)定義變量
? 3.for循環(huán),for循環(huán)里面是父級(jí)作用域,里面又一個(gè)
for(let i= 0;i<3;i++){
? ? let i = 'abc';
? ? ?console.log(i);//abc 3遍
}
類(lèi)似
{
????let i= 1;
????{ let i= 5; }
????alert(i); //1
}
塊級(jí)作用域:
{
? ? ? ? ? ? //塊級(jí)作用域
}
if(){XX}
for(){}
while(){}
之前的塊級(jí)作用域的實(shí)現(xiàn):IIFE立即執(zhí)行函數(shù)
(function(){
? ? //todo
})()
const: 特性和let一樣
? ? cosnt定義變量不能修改
? ? const定義完變量预柒,必須有值遮怜,不能后賦值陌凳,不能修改
const arr =['apple','banana'];
arr.push('orange');
console.log(arr);//['apple','banana','orange'];
若使用Object.freeze(對(duì)象);
const arr =? Object.freeze(['apple','banana']);
arr.push('orange');
console.log(arr);
報(bào)錯(cuò):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充岛;//會(huì)報(bào)錯(cuò)