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

歡迎轉載,但請註明出處,謝謝!

相關文章
相關標籤/搜索