PHP中文网2017-06-21 09:38:13
<script> var bar=function(){ var foo=function(){} foo=10; } var foo=1; bar(); alert(foo); </script>
js申明部分被頂置,函數內部的foo是局部變量,不影響全局的foo。
ringa_lee2017-06-21 09:37:34
1函數宣告會置頂
2變數宣告也會置頂
3函數宣告比變數宣告更置頂:)
4變數和賦值語句一起書寫,在js引擎解析時,會將其拆成宣告和賦值2部分,聲明置頂,賦值保留在原來位置
5聲明過的變數不會重複聲明
以上這幾點你作個參考,就明白原因了!
你的程式碼實際上運行的效果是:
function bar(){ function foo(){} var foo;//实际上无效 foo=10; } var foo; bar(); foo=1; console.log(foo);