1.js的幾種數據類型?判斷基本數據類型的操作符是什么?
答案: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在火狐中不可用
(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;
