javascript定義變量時(shí)有var和沒(méi)有var的區(qū)別探討
我們先來(lái)看一段代碼
function show(){ alert(abc); } var abc="defg"; show();
有過(guò)C++或Java編程經(jīng)驗(yàn)的人可能會(huì)說(shuō):“這程序,死定了,變量竟然在引用了該變量的函數(shù)后邊定義,bug會(huì)滅掉你的?!狈旁跒g覽器上運(yùn)行一下,結(jié)果怎樣?完美運(yùn)行!接下來(lái)我們就說(shuō)一下這是咋回事——有var和沒(méi)有var定義的變量的區(qū)別。
1、沒(méi)有var
簡(jiǎn)明的說(shuō),定義變量時(shí)省略var是不安全的,不過(guò)是合法的。這時(shí)無(wú)論該變量是在什么位置定義的,解釋器都會(huì)賦予該變量以全局作用域。
2、有var
安全的,合法的。定義的變量的作用域取決于定義的位置。至于作用域具體是什么,請(qǐng)參見(jiàn)本博客中“javascript作用域”一文。
這樣,開(kāi)頭的那個(gè)問(wèn)題可以解決了。函數(shù)中的才是對(duì)abc的定義,只不過(guò)值為undefined,這時(shí)abc有全局作用域,函數(shù)外的只是對(duì)abc的值的更新。
- 在Javascript中 聲明時(shí)用"var"與不用"var"的區(qū)別
- javascript定義變量時(shí)加var與不加var的區(qū)別
- JavaScript中var關(guān)鍵字的使用詳解
- js for循環(huán),為什么一定要加var定義i變量
- JavaScript中const、var和let區(qū)別淺析
- 淺析JavaScript中var that=this
- JScript中的''var''定義變量的作用域
- Javascript var變量隱式聲明方法
- 關(guān)于JavaScript中var聲明變量作用域的推斷
- JavaScript ES6中const、let與var的對(duì)比詳解
- JavaScript中var的重要性實(shí)例分析
相關(guān)文章
Javascript typeof與instanceof的區(qū)別
JavaScript 中 typeof 和 instanceof 常用來(lái)判斷一個(gè)變量是否為空,或者是什么類(lèi)型的。但它們之間還是有區(qū)別的,需要的朋友可以參考下2016-10-10深入理解JavaScript系列(50):Function模式(下篇)
這篇文章主要介紹了深入理解JavaScript系列(50):Function模式(下篇),本篇我們介紹的一些模式稱(chēng)為初始化模式和性能模式,主要是用在初始化以及提高性能方面,一些模式之前已經(jīng)提到過(guò),這里只是做一下總結(jié),需要的朋友可以參考下2015-03-03使用 TypeScript 重新編寫(xiě)的 JavaScript 坦克大戰(zhàn)游戲代碼
這篇文章主要介紹了使用 TypeScript 重新編寫(xiě)的 JavaScript 坦克大戰(zhàn)游戲代碼,主要是對(duì)自己近期學(xué)習(xí)TypeScript的一個(gè)小小的總結(jié)實(shí)踐,推薦給小伙伴們,希望大家能夠喜歡。2015-04-04actionscript與javascript的區(qū)別
actionscript是flash的腳本語(yǔ)言,目前已經(jīng)由adobe公司升級(jí)到3.0版本,成為了真正意義的oop語(yǔ)言,JavaScript是由netscape工程師設(shè)計(jì)完成的一門(mén)腳本語(yǔ)言,用于web開(kāi)發(fā)的前端腳本2011-05-05window.parent與window.openner區(qū)別介紹
今天總結(jié)一下js中幾個(gè)對(duì)象的區(qū)別和用法,對(duì)這幾個(gè)概念混淆的朋友可以看看2012-04-04