javaScript中的变量和变量作用域及一些个人的见解

2019-07-18  本文已影响0人  爱讲鸡汤的油腻大叔

JavaScript中的变量类型

一、数
二、字符串
三、布尔值
四、函数
五、对象
六、undefined
七、null
八、数组
九、日期
十、正则表达式

其中对于undefined和null的区别

undefined是变量已经被声明,但是未获得初始化值,如:

const val
console.log(val)     =>   undefined

null表示 该变量指向一个不存在的对象或地址,null类型为一个全局对象

image.png

此外,在基础数学运算中,null值将被转换为0

关于undefined和null的共同点

undefinednull取反之后均为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)仍然输出globalvar_fun中的myVariable为局部变量,仅在var_fun代码块生效,所以这里输出的是全局的myVariable
(4)myVariable没有使用变量关键字修饰,默认为全局变量,输出global
(5)在my_var_fun内,因为没有使用变量关键字修饰,所以这里引用的是全局定义的myVariable,输出global
(6)在(5)中,myVariable被引用并修改,所以输出local

上一篇下一篇

猜你喜欢

热点阅读