javaScript中的变量和变量作用域及一些个人的见解
2019-07-18 本文已影响0人
爱讲鸡汤的油腻大叔
JavaScript中的变量类型
一、数
二、字符串
三、布尔值
四、函数
五、对象
六、undefined
七、null
八、数组
九、日期
十、正则表达式
其中对于undefined和null的区别
undefined
是变量已经被声明,但是未获得初始化值,如:
const val
console.log(val) => undefined
null
表示 该变量指向一个不存在的对象或地址,null
类型为一个全局对象
此外,在基础数学运算中,null
值将被转换为0
关于undefined和null的共同点
undefined
和null
取反之后均为true
console.log(!undefined) => true
console.log(!null) => true
变量作用域
变量可以分为全局变量和局部变量
全局变量在全局都有效
局部变量仅在该变量所在代码块及其子代码块有效
var variable = 'global'
myVariable = 'global'
function var_fun(){
var variable = 'local'
return variable
}
function my_var_fun(){
myVariable = 'local'
return myVariable
}
console.log(variable) (1)
console.log(var_fun()) (2)
console.log(variable) (3)
console.log(myVariable) (4)
console.log(my_var_fun()) (5)
console.log(myVariable) (6)
分析
(1)因为variable
是一个全局变量,所以输出global
(2)myVariable
是在var_fun
声明的局部变量,所以作用域仅在var_fun
内,输出local
(3)仍然输出global
,var_fun
中的myVariable
为局部变量,仅在var_fun
代码块生效,所以这里输出的是全局的myVariable
(4)myVariable
没有使用变量关键字修饰,默认为全局变量,输出global
(5)在my_var_fun
内,因为没有使用变量关键字修饰,所以这里引用的是全局定义的myVariable
,输出global
(6)在(5)中,myVariable
被引用并修改,所以输出local