7-22 es學(xué)習(xí)

1.let命令

1-1. ++牢記重點(diǎn)++

let聲明變量只在所在塊級(jí)作用域起作用即{}

不存在變量提升即無(wú)聲明提前

在let聲明某個(gè)變量的前面拐邪,都屬于這個(gè)變量的死區(qū)

let聲明塊狀區(qū)域內(nèi)不允許重復(fù)聲明

1-2.++重點(diǎn)案列解釋++

(1).{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1

  • es5 沒(méi)有塊級(jí)作用域所以var聲明不報(bào)錯(cuò)而es6{}為塊級(jí)作用域外面不能訪(fǎng)問(wèn)里面

(2).for (let i = 0; i < 10; i++) {
// ...
}
console.log(i);
// ReferenceError: i is not defined

  • for循環(huán)的計(jì)數(shù)器,就很合適使用let命令虚婿。計(jì)數(shù)器i只在for循環(huán)體內(nèi)有效屋剑,在循環(huán)體外引用就會(huì)報(bào)錯(cuò)

(3).var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a6; // 10

  • 最終輸出10因?yàn)閕是全局變量 要等f(wàn)or循環(huán)全部執(zhí)行完畢在執(zhí)行函數(shù)a6而i的最終值為10

(4)var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a6; // 6

  • 變量i是let聲明的茵臭,當(dāng)前的i只在本輪循環(huán)有效震叮,所以每一次循環(huán)的i其實(shí)都是一個(gè)新的變量胧砰,所以最后輸出的是6。你可能會(huì)問(wèn)苇瓣,如果每一輪循環(huán)的變量i都是重新聲明的朴则,那它怎么知道上一輪循環(huán)的值,從而計(jì)算出本輪循環(huán)的值钓简?這是因?yàn)?JavaScript 引擎內(nèi)部會(huì)記住上一輪循環(huán)的值,初始化本輪的變量i時(shí)汹想,就在上一輪循環(huán)的基礎(chǔ)上進(jìn)行計(jì)算外邓。

(5).for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc

  • for循環(huán)還有一個(gè)特別之處,就是設(shè)置循環(huán)變量的那部分是一個(gè)父作用域古掏,而循環(huán)體內(nèi)部是一個(gè)單獨(dú)的子作用域损话。這表明函數(shù)內(nèi)部的變量i與循環(huán)變量i不在同一個(gè)作用域,有各自單獨(dú)的作用域。

(6).// var 的情況
console.log(foo); // 輸出undefined
var foo = 2;
// let 的情況
console.log(bar); // 報(bào)錯(cuò)ReferenceError
let bar = 2;

  • 不存在變量提升

if (true) {
// TDZ開(kāi)始
tmp = 'abc'; // ReferenceError
console.log(tmp); // ReferenceError
let tmp; // TDZ結(jié)束
console.log(tmp); // undefined
tmp = 123;
console.log(tmp); // 123
}

  • let前面都是死區(qū)

typeof x; // ReferenceError
let x;
typeof undeclared_variable // "undefined"

  • tyoeof 檢驗(yàn)不安全會(huì)報(bào)錯(cuò)

// 報(bào)錯(cuò)
function () {
let a = 10;
var a = 1;
}
// 報(bào)錯(cuò)
function () {
let a = 10;
let a = 1;
}

function func(arg) {
let arg; // 報(bào)錯(cuò)
}
function func(arg) {
{
let arg; // 不報(bào)錯(cuò)
}
}

  • 不允許重復(fù)聲明

2.塊級(jí)作用域

++2-1.為什么需要塊級(jí)作用域丧枪?++

  • 內(nèi)層變量可能會(huì)覆蓋外層變量

var tmp = new Date();
function f() {
console.log(tmp);
if (false) {
var tmp = 'hello world';
}
}
f(); // undefinedvar tmp = new Date();
function f() {
console.log(tmp);
if (false) {
var tmp = 'hello world';
}
}
f(); // undefined

  • 用來(lái)計(jì)數(shù)的循環(huán)變量泄露為全局變量

var s = 'hello';
for (var i = 0; i < s.length; i++) {
console.log(s[i]);
}
console.log(i); // 5

++2-2.es5模仿塊級(jí)作用域++

(function () {
var tmp = ...;
...
}());

++2-3. es6塊級(jí)作用域++

{
let tmp = ...;
...
}

++2-4.塊級(jí)作用域的弊端---無(wú)法取到里面的值++

{
let t = f();
t = t * t + 1;
}

  • 塊級(jí)作用域?qū)蓚€(gè)語(yǔ)句封裝在一起光涂。但是,在塊級(jí)作用域以外拧烦,沒(méi)有辦法得到t的值忘闻,因?yàn)閴K級(jí)作用域不返回值,除非t是全局變量

let x = do {
let t = f();
t * t + 1;
};

  • 使得塊級(jí)作用域可以變?yōu)楸磉_(dá)式恋博,也就是說(shuō)可以返回值齐佳,辦法就是在塊級(jí)作用域之前加上do,使它變?yōu)閐o表達(dá)式變量x會(huì)得到整個(gè)塊級(jí)作用域的返回值

3.const命令

++const聲明一個(gè)只讀的常量债沮。一旦聲明炼吴,常量的值就不能改變。++

(1)const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.

  • const聲明的變量不得改變值疫衩,這意味著硅蹦,const一旦聲明變量,就必須立即初始化闷煤,不能留到以后賦值
  • 只聲明不賦值童芹,就會(huì)報(bào)錯(cuò)
  • const的作用域與let命令相同:只在聲明所在的塊級(jí)作用域內(nèi)有效。
  • const命令聲明的常量也是不提升曹傀,同樣存在暫時(shí)性死區(qū)辐脖,只能在聲明的位置后面使用。

(2)var message = "Hello!";
let age = 25;
// 以下兩行都會(huì)報(bào)錯(cuò)
const message = "Goodbye!";
const age = 30;

  • const聲明的常量皆愉,也與let一樣不可重復(fù)聲明嗜价。

4.global對(duì)象

  • 瀏覽器里面,頂層對(duì)象是window幕庐,但 Node 和 Web Worker 沒(méi)有window久锥。
  • 瀏覽器和 Web Worker 里面,self也指向頂層對(duì)象异剥,但是 Node 沒(méi)有self瑟由。
  • Node 里面,頂層對(duì)象是global冤寿,但其他環(huán)境都不支持歹苦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市督怜,隨后出現(xiàn)的幾起案子殴瘦,更是在濱河造成了極大的恐慌,老刑警劉巖号杠,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚪腋,死亡現(xiàn)場(chǎng)離奇詭異丰歌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)屉凯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)立帖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人悠砚,你說(shuō)我怎么就攤上這事晓勇。” “怎么了哩簿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵宵蕉,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我节榜,道長(zhǎng)羡玛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任宗苍,我火速辦了婚禮稼稿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讳窟。我一直安慰自己让歼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布丽啡。 她就那樣靜靜地躺著谋右,像睡著了一般。 火紅的嫁衣襯著肌膚如雪补箍。 梳的紋絲不亂的頭發(fā)上改执,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音坑雅,去河邊找鬼辈挂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛裹粤,可吹牛的內(nèi)容都是我干的终蒂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼遥诉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拇泣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起矮锈,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤霉翔,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后愕难,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年猫缭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葱弟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猜丹,死狀恐怖芝加,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情射窒,我是刑警寧澤藏杖,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站脉顿,受9級(jí)特大地震影響蝌麸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜艾疟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一来吩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔽莱,春花似錦弟疆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至仪糖,卻和暖如春柑司,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乓诽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工帜羊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸠天。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓讼育,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親稠集。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奶段,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容