1 ? ? ? console.log(a);
? ? ? ? console.log(b);
? ? ? ? window.b = 10;
? ? ? ? ? var a = 20;
? ?1 undefined? 2? b is not defined? 原因:a變量提升。但是在console.log時并未賦值,所以 ? ? ? ? ? ? ? ? ?undefined。。b根本就沒定義,所以B is defined
2? 什么是深拷貝, 什么是淺拷貝
淺拷貝:*只針對當前對象的屬性進行拷貝,而當當前對象的屬性是引用類型時,這個不考慮。
*屬性是引用類型,拷貝后引用的是地址,如果進行更改,會影響拷貝的對象屬性。
深拷貝:*針對當前對象的數據的所有引用結構都拷貝一份,數據在內存中是獨立的。
*屬性是引用類型,如果進行更改,不會影響拷貝的對象屬性。
實現深拷貝的代碼封裝
var deepCopy = function () {
? ? // 1, 創建一個對象
? ? var temp = {};
? ?// 2, 拷貝屬性, 判斷如果是引用類型需要深拷貝
? ?for ( var k in this ) {
? ? ? if ( typeof this[ k ] === 'object' ) {
? ? ? ?temp[ k ] = this[ k ].deepCopy();
? ?} else {
? ? ? ?temp[ k ] = this[ k ];
? }
? ?// temp[ k ] = this[ k ];
? ?}
? // 3, 返回對象
? ?return temp;
};
3Javascript中callee和caller的作用?
caller是返回一個對函數的引用,該函數調用了當前函數;
callee是返回正在被執行的function函數,也就是所指定的function對象的正文。
4px和em,rem的區別
px像素(Pixel)。相對長度單位。像素px是相對于顯示器屏幕分辨率而言的。(引自CSS2.0手冊)
em是相對長度單位。相對于當前對象內文本的字體尺寸。如當前對行內文本的字體尺寸未被人為設置,則相對于瀏覽器的默認字體尺寸。(引自CSS2.0手冊)