這篇文章給大家分享的就是一點js的筆記,有興趣的朋友可以看一下
1、js會進行一次預編譯處理;
var a; if (!(“a” in window)) { a = 1; }
alert (a); // undefined
這樣,題目的意思就非常清楚了:先宣告a,然後判斷a是否在存在,如果不存在就賦值為1,
很明顯a永遠在window裡存在,這個賦值語 句永遠不會執行,所以結果是undefined。
2、函數宣告會覆寫變數聲明,但不會覆寫變數賦值來看栗子
function value(){ return 1; } alert(typeof value); //”function”
盡快變數宣告在下面定義,但是變數value依然是function ,也就是說這種情況下,
函數宣告的優先權高於變數宣告的優先權,但如果該 變數value賦值了,那結果就完全不一樣了:
##
function value(){ return 1; } var value = 1; alert(typeof value); //”number”
function copy(p) { let c = {}; for(let i in p) { c[i] = p[i]; } return c; }
var a; if (!(“a” in window)) { a = 1; } alert(a); // undefined
很明顯a永遠在window裡存在,這個賦值語 句永遠不會執行,所以結果是undefined。
function value(){ return 1; } alert(typeof value); //”function”
函數宣告的優先權高於變數宣告的優先權,但如果該 變數value賦值了,那結果就完全不一樣了:
##
function value(){ return 1; } var value = 1; alert(typeof value); //”number”
淺拷貝只是拷貝了基本類型的數據,對於數組或物件的話,拷貝的只是其記憶體位址,因此存在元物件被篡改的可能;
function copy(p) { let c = {}; for(let i in p) { c[i] = p[i]; } return c; }
以上是js-筆記的詳細內容。更多資訊請關注PHP中文網其他相關文章!