变量的声明与初始化
在 JavaScript 中,变量可以使用 var 或 let 关键字来声明。如下所示:
var js; // undefined
let javascript; // undefined
代码中即定义了名为 js 与 msg 的两个变量,两者均可以用来保存任何值,而通过这种方式声明的变量可以理解为未被初始化的变量,它们会自动被赋予一个初始值 —— undefined。所以当需要为变量赋值时,可以如下操作:
let msg; // 声明变量
msgmsg = "hello world!" // 为 msg 赋值 "hello world!"
当我们在声明变量时若无法确定变量的初始化值,我们可以如上编写代码;若是可以确定一个准确的初始值,我们还可以将代码简化,如下:
let msg = "hello world!" // 一行语句完成声明与赋值
因为 JavaScript 的变量可以存储任何值,所以我们初始化变量或给变量赋值时,仅仅是将值赋予变量,而没有把变量的数据类型锁定,也就是我们可以在改变值的同时改变变量的数据类型。
let msg = "hello world!" // 当前值为 hello world!
Stringmsg = 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 关键字可以定义全局变量,但这并不建议使用,因为在局部作用域中定义的全局变量不利于后期维护,同时省略了关键字也可能会由于变量不会马上被定义而导致不必要的麻烦,因为函数必须执行过一次后才能让内部的全局变量被定义。
暂无评论内容