JS變量提升原理與用法實例淺析
本文實例講述了JS變量提升。分享給大家供大家參考,具體如下:
該篇介紹什么是變量提升,寫給像我一樣的JS新手看的
簡單來說變量提升就是 JS會把var變量的聲明自動提升到作用域的頂部,即使你不想這樣
一個例子: (局部變量與全局變量同名時 , 局部變量覆蓋全局變量)
var a="全局變量"; function test() { document.writeln(a); var a="局部變量"; document.writeln(a); } test();
上例的兩個輸出結(jié)果是
undefined局部變量
第一個輸出并沒有輸出全局變量a而是undefined ,這就是變量提升導(dǎo)致的
上例等同與下例:
var a="全局變量"; function test() { var a; document.writeln(a); a="局部變量"; document.writeln(a); } test();
test函數(shù)內(nèi)即使局部變量a還沒定義,就已經(jīng)覆蓋了全局變量,可見其聲明已經(jīng)生效了,
即變量聲明會自動提升到作用域的頂部, 即使該語句并沒執(zhí)行
如下例:
var x=100; var y=200; function test() { document.writeln(x); document.writeln(y); if(false) { var x=1; } return; var y=2; } test();
輸出結(jié)果:
undefinedundefined
等同如下形式:
var x=100; var y=200; function test() { var x,y; document.writeln(x); document.writeln(y); if(false) { x=1; } return; y=2; } test();
那么怎么解決這個問題呢?
用let變量!let變量執(zhí)行到定義部分才會裝載,具體用法請自行查詢!
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
JS輕松實現(xiàn)CSS設(shè)置,DIV+CSS常用CSS設(shè)置
JS輕松實現(xiàn)CSS設(shè)置,DIV+CSS常用CSS設(shè)置...2007-02-02webpack如何自動生成網(wǎng)站圖標(biāo)詳解
這篇文章主要給大家介紹了關(guān)于webpack如何自動生成網(wǎng)站圖標(biāo)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01javascript中等于(==)與全等(===)的區(qū)別說明
等于(==)的情況下 只要值相同就返回True。而全等(===)的時候需要值和類型都要匹配才能返回True.2011-01-01一個JavaScript函數(shù)把URL參數(shù)解析成Json對象
一個JavaScript函數(shù)parseQueryString,它的用途是把URL參數(shù)解析為一個對象,很實用,大家可以看看2014-09-09