js学习之变量、做用域和内存问题

js学习之变量、做用域和内存问题

标签(空格分隔): javascriptjavascript


变量

1.基本类型和引用类型:

基本类型值:Undefined, Null, Boolean, Number, String;前端

特色:java

  • 在内存中占据着固定的地方和大小
  • 从一个变量向另外一个变量复制基本类型的值,会建立这个值的一个副本

引用类型值: 是指那些可能由多个值够成的对象git

特色:github

  • 引用类型的值是对象,保存在内存堆中
  • 包含引用类型值的变量复制引用类型的值,复制的实际是指针,所以两个变量最终都指向同一个对象

参数传递

全部函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数。函数


执行环境及做用域

每一个函数都有本身的执行环境。学习

代码在一个环境中执行,会建立变量对象的一个做用域链(scope chain)。做用域链的用途,是保证堆执行环境有权访问的全部变量和函数的有序访问。
做用域链的前端,始终都是当前执行代码所在的环境变量对象。全局执行环境的变量始终都是做用域链的最后一个对象。指针

1.没有块级做用域:

if(true){
    var color = "red";
}
alert(color)   //red

在块级做用域中声明的变量将会添加到当前做用域中去。code

在使用for语句时尤为注意这一点对象

for(var i = 0; i<10; i++){
    doSomething(i);
}
alert(i)  // 10

2.查询标识符:

搜索过程沿着做用域链向上逐级查询与给定名字匹配的标识符。
示例:

var color = "blue";
function getColor() {
    var color = "red";
    return color;
}
alert(getColor());//red

做者博客:pspgbhu

做者GitHub:https://github.com/pspgbhu

欢迎转载,但请注明出处,谢谢!

相关文章
相关标签/搜索