1.js的幾種資料類型?判斷基礎資料型別 (Elementary Data Type)的操作符是什嗎?
答案:Number,String,bool,undefined,obejct(此處為null類型屬於object,所以此處寫object)
typeof
2.列舉你知道的JS瀏覽器安全色問題。
(1)ie不支援ClassName取標籤,非ie支援
(2) 擷取非ie視窗的scrolltop值通過document.body.scrollTop
擷取ie視窗的scrolltop值通過document.documentElement.scrollTop
(3) 通過childNodes擷取子節點,ie不能取到斷行符號節點,非ie可以。
(4) innerText在Firefox中不可用
(5) addEventListener 非ie支援,attachEvent ie專用
(6) input標籤的type屬性在ie6中不可修改
3.setTimeout()和setInterval()的區別以及使用它們需要注意的事項。
setInterval(函數,time) 它從載入後,每隔指定的時間就執行一次運算式(迴圈執行) ,一般放控制函數外部。
setTimeout(函數,time) 在執行時,是在載入後延遲指定時間後,去執行一次運算式, (只執行一次) ,一般放控制函數內部。
注意:(1) 這兩種方法可能看起來非常像,而且顯示的結果也會很相似,不過兩者的最大區別就是,setTimeout方法不會每隔x秒鐘就執行一次函數,它是在每次調用setTimeout後過x秒鐘再去執行函數。這意味著如果函數的主體部分需要2秒鐘執行完,那麼整個函數則要每x+2秒鐘才執行一次。而setInterval卻沒有被自己所調用的函數所束縛,它只是簡單地每隔一定時間就重複執行一次那個函數。如果要求在每隔一個固定的時間間隔後就精確地執行某動作,那麼最好使用setInterval,而如果不想由於連續調用產生互相干擾的問題,尤其是每次函數的調用需要繁重的計算以及很長的處理時間,那麼最好使用setTimeout。
(2) 注意及時清計時器
(3)setTimeout(alert(this),20)/ setInterval(alert(this),20)中this都指向window
(4)不能直接傳參
4.字串轉化為整形的方法,整形轉化為字串的方法。
(1)parseInt()、Number();
(2)toString();String();“”;
5.在團隊開發中,你是如何避免JS命名衝突的?
(1)閉包 ( function ( ) { } )
(2) 命名空間
(3)可以開發前規定命名規範,根據不同開發人員開發的功能在函數前加首碼
6.簡述一下綁定事件的常見方法,它們有什麼特點?
(1)在標籤中綁定;
(2)Element.on+type=func;
(3)attachEvent("on"+type,func);
(4)addEventListener(type,func,false); 執行冒泡階段
addEventListener(type,func,true); 執行捕獲階段
7.
function test(){ alert(this);}test();var o=['a'];o.test = test3 =function(){ alert(this);}o.test();test3();
分別彈出什嗎?為什嗎?
第一個彈window,函數中this指向window,
第二個彈a,方法中的this指向對象
第三個彈window,test3是一個函數;
8.
var a=1;function test(){ a++; alert(a); var a=1; alert(a);}test();
結果是多少?為什嗎?
第一個彈NaN,a在test()裡面找的時候,如果前面沒有聲明var a;那麼a會自動變成var a;但是未賦值,所以是undefined,執行a++的時候會變成NaN,不是一個有效數值;
第二個彈1,因為聲明了變數a=1;所以彈出1;