【总结】变量、作用域

一、基本类型和引用类型的值

Javascript变量由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变。

Undefined、Null、Boolean、Number和String是基本数据类型。

访问变量有按值和按引用两种方式,但参数只能按值传递。

function setName(obj){
   obj.name = "Nicholas";
   obj = new Object();
   obj.name = "Greg";
}

var person = new Object();
setName(person);
alert(person.name); //"Nicholas"
     typeof操作符是确定一个变量是字符串、数值、布尔值,还是undefined的最佳工具。 变量的值是一个对象或null,则typeof操作符返回"object"。

instantceof操作符检测引用类型值。当然使用instanceof操作符检测基本类型的值,则该操作符始终返回false,因为基本类型不是对象。

二、执行环境及作用域

 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。

延长作用域链:try-catch语句的catch块、with语句。(注:这两个语句都会在作用域链的前端添加一个变量对象)

JavaScript没有块级作用域

eg1:

if(true){
   var color = "blue";
}
alert(color); //"blue"
在JavaScript中,if语句中的变量声明会将变量添加到当前的执行环境。

eg2:

for(var i = 0; i<10; i++){
       ...
}
alert(i);//10
对于JavaScript中,由于for语句创建的变量 i 即使在for循环执行结束后,也依旧会存在于循环外部的执行环境中。


在初始化变量时没有使用var声明,该变量会自动被添加到全局环境。

function add(num1,num2){
   sum = num1 + num2;
   return sum;
}
var result = add(10,20); //30
alert(sum);             //30


猜你喜欢

转载自blog.csdn.net/zd375005009/article/details/79030973