24.for循環(huán)的let和var

es6新增let命令用來聲明變量,但是與var的區(qū)別是let聲明的變量只在let所在的代碼塊里面有效[圖片上傳失敗...(image-ecfc47-1526016908749)]
我一直很好奇的是在for循環(huán)里面使用let和var的那種神奇差別到底是怎么產(chǎn)生的,尤其是每次面試題里面出現(xiàn)這個(gè),然后我只能回答的知其然而不知其所以然的時(shí)候,如鯁在喉,難過,好了今天看見一篇帖子嗯瞬間就明白了

  • js是弱類型語言,我們可以看見變量 i 的類型會根據(jù)賦值的不同而改變
var i = 0;
(function () {
    console.log(typeof i);  
    i = 'zb';
    console.log(typeof i);  
    
}());
console.log(i + '$$$')
// number  --> 第一次在全局定義為number型
// string     --> 重新賦值以后變?yōu)閟tring類型
// zb$$$
  • 但是如果是for循環(huán)呢,你會發(fā)現(xiàn)會有所不同
console.log(i + '****');   
console.log(typeof i);

for (var i = 0; i < 3; i++) {
    
    console.log(typeof i);

    var i = 'qbc';
    console.log(typeof i);  

    console.log(i);    
}

console.log(typeof i);
console.log(i);
console.log(i + '$$$');  
// undefined****
// undefined  --> 初次未定義
// number     --> for循環(huán)定義為number型
// string        --> for循環(huán)內(nèi)部修改為string型
// qbc
// number    -->但是為什么在外面還是被定義為number型,這真的是一個(gè)神奇的存在@2
// NaN
// NaN$$$
undefined
  • @2 網(wǎng)上有一種說法就是for循環(huán)設(shè)置循環(huán)變量的那個(gè)作用域是父作用域,而循環(huán)體內(nèi)部是一個(gè)單獨(dú)的子作用域.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • let 命令 塊級作用域 const 命令 頂層對象的屬性 global 對象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice閱讀 1,695評論 0 2
  • 本文屬個(gè)人筆記,不做詳解,僅供參考! let命令 基本用法 ES6 新增了let命令,用來聲明變量。它的用法類似于...
    R_yan閱讀 29,306評論 6 18
  • let 和 const 命令 let 命令 塊級作用域 const 命令 頂層對象的屬性 gl...
    安小明閱讀 1,043評論 0 0
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評論 0 13
  • Tags: 加班 外地人:你們北京人有什么了不起的?北京人微微笑了一下,深深地吸了一口氣(霧霾)外地人:這有什么啊...
    哈慈開閱讀 288評論 0 0

友情鏈接更多精彩內(nèi)容