自學 JS 之 JavaScript 的變量聲明

JavaScript 的變量是鬆散類型的,即可以用來保存任何類型的數據。

在 JavaScript 中,變量可以使用 var 或 let 關鍵字來聲明。如下所示:

var js; // undefined

let javascript; // undefined

代碼中即定義了名為 js 與 msg 的兩個變量,兩者均可以用來保存任何值,而通過這種方式聲明的變量可以理解為未被初始化的變量,它們會自動被賦予一個初始值 —— undefined。所以當需要為變量賦值時,可以如下操作:

let msg; // 聲明變量 msg

msg = "hello world!" // 為 msg 賦值 "hello world!"

當我們在聲明變量時若無法確定變量的初始化值,我們可以如上編寫代碼;若是可以確定一個準確的初始值,我們還可以將代碼簡化,如下:

let msg = "hello world!" // 一行語句完成聲明與賦值

因為 JavaScript 的變量可以存儲任何值,所以我們初始化變量或給變量賦值時,僅僅是將值賦予變量,而沒有把變量的數據類型鎖定,也就是我們可以在改變值的同時改變變量的數據類型。

let msg = "hello world!" // 當前值為 hello world! 數據類型為 String

msg = 1 // 值修改為 1, 數據類型為 Number

不過在編寫程序代碼時,建議不去修改變量的數據類型,有利於後期維護。

在 JavaScript 中,我們也可以使用一條語句聲明多個變量,只需使用逗號將相關的聲明代碼分隔即可:

let name = "jackie", age = 22, gender = "male";

變量的作用域

使用 var、let 關鍵字聲明的變量存在屬於自己的作用域,根據不同的聲明位置,可以被分為全局變量和局部變量。

一般我們在 js 代碼最外層聲明的變量或者在函數體內不使用關鍵字的變量屬於全局變量,而當我們在函數體中聲明的變量屬於局部變量,另外在 ES6+ 版本,我們使用 let 關鍵字在條件控制語句(for、while、if等語句塊)以及大括號對中聲明的變量也屬於局部變量。全局變量具有全局作用域,可以在代碼任意地方被訪問到,相關的變量被綁定在頂級對象 window 中。局部變量具有局部作用域,僅能在作用域內部使用,在外部無法被訪問到。

var msg = "hello world!"; // msg 為全局變量

function fn () {

var num = 1; // num 為局部變量

age = 22 // age 為全局變量

console.log(msg)

}

fn() // 運行函數 fn 後會打印 "hello world!",代表可以訪問到全局變量 msg

console.log(age) // 22 可以訪問到在函數體內的全局變量 age,若未執行函數,則也會無法訪問到 age

console.log(num) // num is not defined,無法訪問到函數內的局部變量 num

{

let year = 2020

var month = 2

}

console.log(year) // year is not defined,無法訪問到{}代碼塊中的局部變量 year

console.log(month) // 2

雖然在代碼中省略 var 關鍵字可以定義全局變量,但這並不建議使用,因為在局部作用域中定義的全局變量不利於後期維護,同時省略了關鍵字也可能會由於變量不會馬上被定義而導致不必要的麻煩,因為函數必須執行過一次後才能讓內部的全局變量被定義。

自學 JS 之 JavaScript 的變量聲明

JavaScript



分享到:


相關文章: