使用let的時候出現的小坑

2021-08-11 03:18:13 字數 1181 閱讀 1476

今天在寫**使用let的時候遇到一點有意思的小坑.

**如下:

let a = 'the window';

let obj = ;

}};alert(obj.getobjname()());

如果實用的是var宣告的變數a的話,輸出結果是預期的』the window』,

但是現在使用let宣告,輸出的時候卻是undefined. 為什麼呢?

我又嘗試了如下**:

let a = 'the window';

alert(window.a); //

undefined

var a = 'the window';

alert(window.a); // the window

然後恍然, var宣告的全域性變數,缺省會新增到window下,作為window的乙個屬性值存在.

使用let在宣告變數的時候明顯不同, 不會作為window的屬性, 單純的就是宣告了乙個塊級變數.

上面的函式中,實際呼叫是 alert(this.a) , 此時this指向window,而window下沒有對應屬性a , 所以輸出結果undefined.

/*******************我是蛋疼的分割線*************************/

var let = 1;

console.log(let); // 1 居然沒事...

'use strict'

varlet = 1; //嚴格模式下直接報錯: uncaught syntaxerror: unexpected strict mode reserved word

console.log(let);

var

const= 1; //直接報錯: uncaught syntaxerror: unexpected token const

let

let = 1; //直接報錯:uncaught syntaxerror: let

is disallowed as a lexically bound name

Git 使用git時候的坑

git有4個區域 工作區 working directory 工作區是我們能看到的區域,就是本地目錄,我們在目錄裡面進行操作 暫存區 stage index git add命令就是將檔案從工作區新增到暫存區 本地版本庫 repository git commit命令就是將暫存區的檔案提交到本地版本庫...

linux使用apt get時候出現的錯誤

e sub process usr bin dpkg returned an error code 1 錯誤解決 在用apt get安裝軟體時出現了類似於 install info no dir file specified try help for more information.dpkg 處理...

使用註解 Resoure的時候容易出現的問題

1.在使用 resoure的時候需要注意 的事項 resource name usermanger public void setusermanger usermanger usermanger 你要注意 你的usermanger 是具體的實現方法還是介面 如果是實現的方法就會出現 模型不匹配的錯誤...