JS中的作用域


if (true) {
    var name = 'zhangsan'
}
console.log(name)

從上面的例子可以體會到作用域的概念,作用域就是一個獨立的地盤,讓變量不會外泄、暴露出去。上面的name就被暴露出去了,因此,JS 沒有塊級作用域,只有全局作用域和函數作用域

var a = 100
function fn() {
    var a = 200
    console.log('fn', a)
}
console.log('global', a)
fn()

全局作用域就是最外層的作用域,如果我們寫了很多行 JS 代碼,變量定義都沒有用函數包括,那么他們就全部都在全局作用域中。這樣的壞處就是很容易裝車。

// 張三寫的代碼中
var data = {a:100}

// 李四寫的代碼中
var data = {x:true}

這就是為何 jquery zepto 等庫的源碼,所有的代碼都會放在(function(){....})()中。因為放在里面的所有變量,都不會被外泄和暴露,不會污染到外面,不會對其他的庫或者 JS 腳本造成影響。這是函數作用域的一個體現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM