JavaScript學習第五天筆記(做用域)

做用域

概述

變量和函數都具備做用域 做用域就是變量和函數的可被訪問的範圍 控制着變量和函數的可見性和生命週期。
變量的做用域可被分爲全局做用域和局部做用域(函數做用域) 若是變量是被定義在全局做用域的話 在JavaScript代碼中的任何位置均可以訪問該變量 若是變量被定義在指定函數內部 在JavaScript代碼中只能在該函數內部訪問該變量。
函數的做用域也可被分爲全局做用域和局部做用域(函數做用域) 被定義在指定函數內部的函數被稱爲局部函數或內部函數。函數

全局變量

在全部函數以外聲明的變量,叫作全局變量,由於他可被當前文檔中的其餘代碼所訪問。code

局部變量

在函數內部聲明的變量被成爲局部變量,它只能在函數的內部進行訪問。生命週期

聲明提早

JavaScript變量的另外一個特別之處是,能夠小猴聲明的變量,而不會引起異常,這一律念被稱爲生命提早。
示例代碼ip

console.log(num);// undefined
var num = 100;/* 定義全局變量 */
/* 定義函數 */
function fun(){
    // 全局變量與局部變量同名時 - 在當前函數做用域中只能訪問局部變量
    console.log(num);// undefined

    var num = 200;/* 定義局部變量 */
    // 就近原則
    console.log(num);// 200
}
/* 調用函數 */
fun();
// 局部變量在全局做用域中沒法訪問 - 只能訪問全局變量
console.log(num);// 100

按置傳遞

按置傳遞就是指將實參變量的值複製一份副本給函數的形參變量。JavaScript中爲函數傳遞參數時,都是按值傳遞的。若是向函數傳遞的參數時原始類型數據,則在函數中修稿參數變量的值,不會影響外部實參的變量。
示例代碼作用域

var num = 100;/* 定義一個全局變量 */
function fun(num){
    num++;
    console.log('函數內部的值: ' + num);// 101
}
fun(num);/* 實參 */
/* 調用指定全局變量 */
console.log('全局做用域的值: ' + num);// 100 101


var v = 200;
function fn(){
    v++;
}
fn();
console.log(v);// 201
相關文章
相關標籤/搜索