中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在JavaScript中聲明變量

發布時間:2021-05-11 15:50:54 來源:億速云 閱讀:117 作者:Leah 欄目:web開發

如何在JavaScript中聲明變量?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

javascript是一種什么語言

javascript是一種動態類型、弱類型的語言,基于對象和事件驅動并具有相對安全性并廣泛用于客戶端網頁開發的腳本語言,同時也是一種廣泛用于客戶端Web開發的腳本語言。它主要用來給HTML網頁添加動態功能,現在JavaScript也可被用于網絡服務器,如Node.js。

JavaScript的變量聲明

JavaScript的變量聲明語句無論出現在何處,都會先于其他代碼首先被執行。使用var關鍵詞聲明變量的作用域是當前的執行上下文,有可能是外圍函數,或者,當變量聲明在函數體之外時,則為全局變量。

向一個未聲明變量賦值會隱式地將其創建為一個全局變量(它變成了全局對象的一個屬性)。聲明變量與未聲明變量之間的區別為:

1. 聲明變量的作用范圍限定在其執行的上下文環境中。未聲明的變量總是全局的。

function x() {
 y = 1;  // Throws a ReferenceError in strict mode
 var z = 2;
}
x();
console.log(y); // logs "1" 
console.log(z); // Throws a ReferenceError: z is not defined outside x

2. 聲明變量在其他代碼執行之前創建。未聲明的變量在其賦值語句執行之前都是不存在的。

console.log(a);        // Throws a ReferenceError.
console.log('still going...'); // Never executes.
var a;
console.log(a);        // logs "undefined" or "" depending on browser.
console.log('still going...'); // logs "still going...".

3. 聲明變量是執行上下文(函數或者全局)的不可配置的屬性。而未聲明變量是可配置的(例如,可以被delete)

var a = 1;
b = 2;
delete this.a; // Throws a TypeError in strict mode. Fails silently otherwise.
delete this.b;
console.log(a, b); // Throws a ReferenceError. 
// The 'b' property was deleted and no longer exists.

由于以上三點不同,使用未聲明變量可能會帶來意想不到的結果。因此建議無論是全局變量還是局部變量,在使用前都要聲明。在ECMAScript5的嚴格模式下,對未聲明變量賦值會拋出一個錯誤。

聲明提前(var hoisting):

JavaScript的函數作用域是指在函數內聲明的所有變量在函數體內是始終可見的。有趣的是,這意味著變量甚至可以先使用,后聲明。

JavaScript的這一特性被非正式地稱為聲明提前(hoiosting),即JavaScript函數中所有變量的聲明都被“提前”至函數體的頂部。

(“聲明提前”的操作是在JavaScript引擎的“預編譯”時進行的,即在代碼運行之前)

例如下面的JavaScript代碼:

var scope = "global";
function f() {
  alert(scope);
  var scope = "local"; //覆蓋全局變量
  alert(scope);
}

讀者可能誤以為函數f的第一個alert會輸出"global",因為代碼此時還沒有執行到var語句聲明局部變量的代碼行。

其實不然,由于函數作用域的特性,局部變量在整個函數體內始終是有定義的,亦即,在函數體內局部變量覆蓋了同名的全局變量。盡管如此,只有程序執行到var語句時,局部變量才會被賦值。因此上述過程等價于,將函數體內的變量聲明“提前”至函數體頂部,而變量的初始化保留在原處。

function f() {
  var scope; //函數體頂部聲明局部變量
  alert(scope); //輸出"undefined"
  scope = "local"; //變量初始化賦值
  alert(scope); //輸出"local"
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安顺市| 隆子县| 长兴县| 山东省| 石门县| 新丰县| 汉沽区| 中方县| 云林县| 乌拉特前旗| 平和县| 平舆县| 永兴县| 平江县| 宜城市| 宁都县| 平遥县| 兰西县| 盘山县| 南和县| 阜新| 错那县| 蓬莱市| 博罗县| 白山市| 肃宁县| 剑阁县| 营口市| 扎囊县| 中阳县| 甘孜县| 海城市| 高要市| 资讯| 紫阳县| 乾安县| 新兴县| 漾濞| 安国市| 呼伦贝尔市| 特克斯县|