var的本質:
var a=3:宣告乙個變數a並給它賦值3;
a=3:並沒有宣告乙個新的變數,只是往它的外層尋找變數名為a的變數,並給它賦值3。(假設外層都沒有宣告a,那麼會找到window上的變數a)
接下來我們看幾個例子:
1.t2()中的str沒有用var宣告,找到了它的外層t1()中的str
執行結果:
2.將t1()中的 var str="china"注釋掉,那麼t2()就找到了最外層的全域性變數str
執行結果:
3.把第乙個例子t2()中的str="japan"用var來宣告,那麼它就不會去找外層的str,而是宣告了乙個新的變數,所以t1()中的str和全域性變數str都不會受到影響。
執行結果:
window上定義的變數和全域性變數的區別:
所有在全域性作用域中宣告的變數、函式都會變成window物件的屬性和方法,如:
var str="china" 可以用 window.str來訪問結果也是"china"。那麼兩者定義的方式有什麼區別呢?
window上的變數都是存在的,可以理解為都宣告過,只是沒有定義,如果訪問它是undefined;但假如去訪問乙個沒有宣告過的變數,會報錯。
執行結果:
JS中用var宣告變數和不用var宣告變數的區別
閱前須知 作用域 分為全域性和區域性 函式會開闢自己的作用域 或 空間 或 過程級 變數宣告 變數在指令碼中的第一次出現是在宣告中。變數在第一次用到時就設定於記憶體中,便於後來在指令碼中引用。使用變數之前先進行宣告。可以使用 var 關鍵字來進行變數宣告。var count 單個宣告。var cou...
javascript中let和var的區別
0.1 2018.02.23 11 06 字數 584 let是es6中新增命令,也是用來宣告變數的,可能很多小夥伴都像我一樣,定義變數的時候都會用var而很少用到let,那麼,let和var到底有什麼區別呢?let和var的區別體現在作用域上。var的作用域被規定為乙個函式作用域,而let則被規定...
JS中用var宣告變數和不用的區別
在js中宣告變數時用var和不用var有什麼區別,我查閱了很多的資料和書籍再加上我自己的理解來講述一下我自己的看法。在函式內部宣告變數 在函式內部如果用var宣告變數和不用時有很大差別,用var宣告的是區域性變數,在函式外部訪問這個變數是訪問不到的,沒var宣告的是全域性變數。在函式外部是可以訪問到...