let是ES6新增的指令,她得多用范圍是在塊作用于內(nèi)有效比:
在花括號外輸出定義的str會報錯郭赐,但是單獨(dú)輸出age是正確的薪韩。
此外,var命令會發(fā)生”變量提升“現(xiàn)象捌锭,就是說你可以先使用變量俘陷,然后再聲明,值為undefined观谦。這種現(xiàn)象多多少少是有些奇怪的拉盾,按照一般的邏輯,變量應(yīng)該在聲明語句之后才可以使用豁状。但是是用let是完全符合這個邏輯的捉偏,即先聲明變量,然后再使用泻红,不然會報錯:
上面代碼中夭禽,變量age用var命令聲明,會發(fā)生變量提升谊路,即在運(yùn)行前讹躯,變量age已經(jīng)存在了,但是沒有值缠劝,所以會輸出undefined潮梯。變量sex用let命令聲明,先聲明后輸出是正確的惨恭。但是變量nickname先輸出酷麦,會報錯,這表示在聲明它之前喉恋,變量nickname是不存在的沃饶,這時如果用到它母廷,就會拋出一個錯誤。