avascript變量聲明的方法實(shí)例

時(shí)間:2022-06-24 14:09:22 聲明范文 我要投稿
  • 相關(guān)推薦

avascript變量聲明的方法實(shí)例

  js中使用一個(gè)變量之前應當先聲明。變量使用關(guān)鍵字var來(lái)聲明。

  如果未在var聲明語(yǔ)句中給變量指定初始值,則該變量值為undefined。

  不用在聲明變量時(shí)指定變量類(lèi)型,js變量可以是任意數據類(lèi)型。

  使用var語(yǔ)句重復聲明變量是合法且無(wú)害的。如果重復聲明帶有初始化器,則就和簡(jiǎn)單的賦值語(yǔ)句沒(méi)啥區別。

  如果試圖讀取一個(gè)沒(méi)有聲明的變量,則js會(huì )報錯。在ECMAScript5嚴格模式下,給一個(gè)沒(méi)有聲明的變量賦值也會(huì )報錯;然而從歷史上來(lái)說(shuō),在非嚴格模式下,如果給一個(gè)未聲明變量賦值,js實(shí)際上會(huì )給全局對象創(chuàng )建一個(gè)同名屬性,且貌似它工作起來(lái)像一個(gè)正確聲明的全局變量。這意味著(zhù)你可以?xún)e幸不聲明全局變量,但這是一個(gè)壞習慣會(huì )造成很多bug,最好始終使用var來(lái)聲明變量。

  在函數體內,同名的局部變量會(huì )覆蓋全局變量。

  盡管全局作用域寫(xiě)代碼可以不寫(xiě)var語(yǔ)句,但聲明局部變量時(shí)必須使用var語(yǔ)句,參考如下代碼:

  scope = "global";function foo(){ scope="local" //fk!我們剛剛修改了全局變量。!}

  在類(lèi)似C語(yǔ)言的編程語(yǔ)言中,花括號中每一段代碼都有各自的作用域,且變量在聲明它們代碼段之外是不可見(jiàn)的,我們稱(chēng)之為塊級作用域(block scope);而js中沒(méi)有塊級作用域,而是取而代之的使用了函數作用域(function scope):變量在聲明它們的函數體以及這個(gè)函數體嵌套的任意函數體內都是有定義的(無(wú)論是內嵌套還是外嵌套?)

  js的函數作用域指在函數內聲明的所有變量在函數體內始終是可見(jiàn)的,這意味著(zhù)變量在聲明前甚至可以使用了。js的這個(gè)特性非正式的稱(chēng)為聲明提前(hoisting),即js函數里聲明的所有變量(但沒(méi)有賦值)都被“提前”至函數體的頂部。

  var scope = "global";function f(){ console.log(scope); //輸出"undefined"而不是"global" var scope = "local"; //變量在這里賦初始值,但變量在函數體內任何地方均是有定義的 console.log(scope); //輸出"local"

  以上代碼等價(jià)于:

  function f(){ var scope; console.log(scope); scope = "local"; console.log(scope); }

  當聲明一個(gè)js全局變量時(shí),實(shí)際上定義了全局對象的一個(gè)屬性。

  當用var聲明一個(gè)變量時(shí),創(chuàng )建的這個(gè)屬性時(shí)不可配置的,即無(wú)法用運算符刪除;但當你沒(méi)有使用嚴格模式并給一個(gè)未聲明的變量賦值的話(huà),js會(huì )自動(dòng)創(chuàng )建一個(gè)全局變量,以這種方式創(chuàng )建的變量是全局對象的正?膳渲脤傩,是可以刪除的:

  var x = 1; y = 2;this.z = 3; //同上 x; //返回false,無(wú)法刪除變量 y; //返回true,變量被刪除 this.z //同上

  希望本文所述對大家的javascript程序設計有所幫助。

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆