国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript變量聲明實例分析

2019-11-20 12:36:30
字體:
來源:轉載
供稿:網友

本文實例講述了javascript變量聲明的方法。分享給大家供大家參考。具體分析如下:

js中使用一個變量之前應當先聲明。變量使用關鍵字var來聲明。

如果未在var聲明語句中給變量指定初始值,則該變量值為undefined。
不用在聲明變量時指定變量類型,js變量可以是任意數據類型。

使用var語句重復聲明變量是合法且無害的。如果重復聲明帶有初始化器,則就和簡單的賦值語句沒啥區別。

如果試圖讀取一個沒有聲明的變量,則js會報錯。在ECMAScript5嚴格模式下,給一個沒有聲明的變量賦值也會報錯;然而從歷史上來說,在非嚴格模式下,如果給一個未聲明變量賦值,js實際上會給全局對象創建一個同名屬性,且貌似它工作起來像一個正確聲明的全局變量。這意味著你可以僥幸不聲明全局變量,但這是一個壞習慣會造成很多bug,最好始終使用var來聲明變量。

在函數體內,同名的局部變量會覆蓋全局變量。
盡管全局作用域寫代碼可以不寫var語句,但聲明局部變量時必須使用var語句,參考如下代碼:

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

在類似C語言的編程語言中,花括號中每一段代碼都有各自的作用域,且變量在聲明它們代碼段之外是不可見的,我們稱之為塊級作用域(block scope);而js中沒有塊級作用域,而是取而代之的使用了函數作用域(function scope):變量在聲明它們的函數體以及這個函數體嵌套的任意函數體內都是有定義的(無論是內嵌套還是外嵌套?)
js的函數作用域指在函數內聲明的所有變量在函數體內始終是可見的,這意味著變量在聲明前甚至可以使用了。js的這個特性非正式的稱為聲明提前(hoisting),即js函數里聲明的所有變量(但沒有賦值)都被“提前”至函數體的頂部。

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

以上代碼等價于:

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

當聲明一個js全局變量時,實際上定義了全局對象的一個屬性。
當用var聲明一個變量時,創建的這個屬性時不可配置的,即無法用delete運算符刪除;但當你沒有使用嚴格模式并給一個未聲明的變量賦值的話,js會自動創建一個全局變量,以這種方式創建的變量是全局對象的正常可配置屬性,是可以刪除的:

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台安县| 凤庆县| 乐清市| 福州市| 江永县| 龙州县| 洪雅县| 西丰县| 玉龙| 武汉市| 内黄县| 健康| 城市| 疏附县| 陆川县| 稻城县| 托里县| 青神县| 普兰店市| 游戏| 淮南市| 师宗县| 双桥区| 右玉县| 奉新县| 东乌| 绥中县| 台州市| 通山县| 宜阳县| 桃源县| 福建省| 青阳县| 缙云县| 彭阳县| 广德县| 大邑县| 阆中市| 大理市| 花莲市| 南澳县|