1.JavaScript的數(shù)據(jù)類型有哪些茴丰,如何判斷某變量是否為數(shù)組數(shù)據(jù)類型?
答:string姐刁,number芥牌,boolean,undefined,null聂使,object壁拉,symbol
用isArray() instanceof
2.已知id的input輸入框,希望獲取這個(gè)輸入框的輸入值柏靶,怎么做弃理?(不使用第三方框架)
答:var inp = document.getElementById("id").value;
alert(inp)
3.希望獲取到頁(yè)面中所有的CheckBox,怎么做屎蜓?(不使用第三方框架)
答:可以將所有的CheckBox賦予同一個(gè)類名痘昌,然后通過(guò)document.getElementByClassName獲取
4.設(shè)置一個(gè)一已知id的div的HTML內(nèi)容為xxx,字體顏色設(shè)置為黑色(不使用第三方框架)
答:document.getElementById(“ID”).style("color":"black")
5.當(dāng)一個(gè)DOM節(jié)點(diǎn)被點(diǎn)擊時(shí)梆靖,我們希望能夠執(zhí)行一個(gè)函數(shù)控汉,應(yīng)該怎么做?JavaScript的事件流模型都有什么返吻?
答:直接在DOM里綁定事件:<div onclick=”test()”></div>
在JS里通過(guò)onclick綁定:xxx.onclick = test
通過(guò)事件添加進(jìn)行綁定:addEventListener(xxx, ‘click’, test)
那么問(wèn)題來(lái)了,Javascript的事件流模型都有什么乎婿?
“事件冒泡”:事件開始由最具體的元素接受测僵,然后逐級(jí)向上傳播
“事件捕捉”:事件由最不具體的節(jié)點(diǎn)先接收,然后逐級(jí)向下,一直到最具體的
“DOM事件流”:三個(gè)階段:事件捕捉捍靠,目標(biāo)階段沐旨,事件冒泡
6.看下列代碼輸出為何?解釋原因
var a;
alert(typeof a); //undefined 因?yàn)槁暶髁说菦](méi)有賦值
alert(b) //b is not defined 根本就沒(méi)有聲明 b
7.看下列代碼榨婆,輸出什么磁携?解釋原因
var a = null;
alert(typeof a);
答:object 從邏輯角度來(lái)看,null值表示一個(gè)空對(duì)象指針良风,而這正是使用typeof操作符檢測(cè)null值時(shí)會(huì)返回“object”的原因谊迄。
8.看下列代碼,輸出什么烟央?解釋原因
var undefined; // 報(bào)錯(cuò)
undefined == null; // true
1==true; // true
2==true; // false
0==false; // true
0==''; // true
NaN==NaN; // false
{}==false; // false
{}==!{}; // false
9.居中div浮動(dòng)元素统诺,容器寬度為300px,高為200px,請(qǐng)居中顯示div
<html>
<head>
<style type="text/css">
.div{width:300px;height:200px;margin:0 auto}
</style>
</head>
<body>
<div class="div">居中顯示</div>
</body>
</html>
10.簡(jiǎn)單介紹以下幾種值得顯示效果。block疑俭,none粮呢,inline-block,list-item
答:none 此元素不會(huì)被顯示钞艇。
block 此元素將顯示為塊級(jí)元素啄寡,此元素前后會(huì)帶有換行符。
inline 默認(rèn)哩照。此元素會(huì)被顯示為內(nèi)聯(lián)元素这难,元素前后沒(méi)有換行符。
inline-block 行內(nèi)塊元素葡秒。(CSS2.1 新增的值)
list-item 此元素會(huì)作為列表顯示姻乓。
run-in 此元素會(huì)根據(jù)上下文作為塊級(jí)元素或內(nèi)聯(lián)元素顯示。
compact CSS 中有值 compact眯牧,不過(guò)由于缺乏廣泛支持蹋岩,已經(jīng)從 CSS2.1 中刪除。
marker CSS 中有值 marker学少,不過(guò)由于缺乏廣泛支持剪个,已經(jīng)從 CSS2.1 中刪除。
table 此元素會(huì)作為塊級(jí)表格來(lái)顯示(類似 <table>)版确,表格前后帶有換行符扣囊。
inline-table 此元素會(huì)作為內(nèi)聯(lián)表格來(lái)顯示(類似 <table>),表格前后沒(méi)有換行符绒疗。
table-row-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來(lái)顯示(類似 <tbody>)侵歇。
table-header-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來(lái)顯示(類似 <thead>)。
table-footer-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來(lái)顯示(類似 <tfoot>)吓蘑。
table-row 此元素會(huì)作為一個(gè)表格行顯示(類似 <tr>)惕虑。
table-column-group 此元素會(huì)作為一個(gè)或多個(gè)列的分組來(lái)顯示(類似 <colgroup>)坟冲。
table-column 此元素會(huì)作為一個(gè)單元格列顯示(類似 <col>)
table-cell 此元素會(huì)作為一個(gè)表格單元格顯示(類似 <td> 和 <th>)
table-caption 此元素會(huì)作為一個(gè)表格標(biāo)題顯示(類似 <caption>)
inherit 規(guī)定應(yīng)該從父元素繼承 display 屬性的值。
11.css3有哪些 新特性
答: 第 1 選擇器
第 2 rgba多欄布局
第 4 多背景圖
第 5 Word Wrap
第 6 文字陰影
第 7 @font-face屬性
第 8 圓角(邊框半徑)
第 9 邊框圖片
第 10 盒陰影
第 11 盒子大小
第 12 媒體查詢
第 13 語(yǔ)音
12.解釋一下localstorage和sessionstorage的區(qū)別溃蔫。他們和cookie又有什么不同健提?
cookie是網(wǎng)站為了標(biāo)示用戶身份而儲(chǔ)存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。
cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要)伟叛,記會(huì)在瀏覽器和服務(wù)器間來(lái)回傳遞私痹。
sessionStorage和localStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存
1)共享 sessionStorage不能共享 localStorage在同源文檔之間共享统刮,cookie在同源且符合path原則的文檔之間共享
2)有效期:cookie在設(shè)置的有效期內(nèi)有效紊遵,默認(rèn)瀏覽器關(guān)閉,sessionStorage在窗口關(guān)閉之前有效网沾,localStroage長(zhǎng)期有效癞蚕,直到用戶刪除
3)localStroage的修改會(huì)促發(fā)其他文檔窗口的update事件
4)cookie會(huì)在請(qǐng)求時(shí)發(fā)送到服務(wù)器,作為會(huì)話標(biāo)識(shí)辉哥,服務(wù)器可修改cookie桦山,webStorage不會(huì)發(fā)送到服務(wù)器
5)cookie有path概念,子路徑可以訪問(wèn)父路徑cookie醋旦,父路徑不能訪問(wèn)子路徑的cookie
6)cookie有secure屬性要求https傳輸恒水,瀏覽器不能超過(guò)300個(gè)cookie,單個(gè)服務(wù)器不能超過(guò)20個(gè)饲齐,每個(gè)cookie不能超過(guò)4k钉凌,webStroage大小支持能達(dá)到5m
13.有哪些性能優(yōu)化方法?
第一:面向內(nèi)容的優(yōu)化
1. 減少 HTTP 請(qǐng)求
2. 減少 DNS 查找
3. 避免重定向
4. 使用 Ajax 緩存
5. 延遲載入組件
6. 預(yù)先載入組件
7. 減少 DOM 元素?cái)?shù)量
8. 切分組件到多個(gè)域
9. 最小化 iframe 的數(shù)量
10. 不要出現(xiàn)http 404 錯(cuò)誤
第二:面向 Server
1. 縮小 Cookie
2. 針對(duì) Web 組件使用域名無(wú)關(guān)性的
14.簡(jiǎn)述"=="和"==="的不同捂人?
==關(guān)系運(yùn)算符
===數(shù)據(jù)類型也要一樣
**15.簡(jiǎn)述NAN Null undefined區(qū)別 ** http://www.cnblogs.com/phpk/p/6093216.html 這個(gè)網(wǎng)站更全
null:空的御雕,無(wú)效的的意思
NaN:計(jì)算中出現(xiàn)錯(cuò)誤或者計(jì)算錯(cuò)誤。
undefined:不明確滥搭,未知酸纲,可以指出字符串,,一般是出現(xiàn)了未定義的字符,需要宏定義一下瑟匆。
16.在JavaScript中什么是偽數(shù)組闽坡?如何將偽數(shù)組轉(zhuǎn)化為標(biāo)準(zhǔn)數(shù)組?
偽數(shù)組(類數(shù)組):
無(wú)法直接調(diào)用數(shù)組方法或期望length屬性有什么特殊的行為愁溜,不具有數(shù)組的push,pop等方法疾嗅,但仍可以對(duì)真正數(shù)組遍歷方法來(lái)遍歷它們。典型的是函數(shù)的argument參數(shù)冕象,還有像調(diào)用getElementsByTagName,document.childNodes之類的,它們都返回NodeList對(duì)象都屬于偽數(shù)組代承。可以使用Array.prototype.slice.call(fakeArray)將數(shù)組轉(zhuǎn)化為真正的Array對(duì)象交惯。
function log(){
var args = Array.prototype.slice.call(arguments); //為了使用unshift數(shù)組方法次泽,將argument轉(zhuǎn)化為真正的數(shù)組
args.unshift('(app)'); console.log.apply(console, args);
};
這里把符合以下條件的對(duì)象稱為偽數(shù)組:
1穿仪,具有l(wèi)ength屬性
2席爽,按索引方式存儲(chǔ)數(shù)據(jù)
3意荤,不具有數(shù)組的push,pop等方法
如
1,function內(nèi)的arguments 只锻。
2玖像,通過(guò)document.forms,F(xiàn)orm.elements齐饮,Select.options捐寥,document.getElementsByName() ,
document.getElementsByTagName() 祖驱,childNodes/children 等方式獲取的集合(HTMLCollection握恳,NodeList)等。
3捺僻,特殊寫法的對(duì)象 乡洼,如
Js代碼 收藏代碼
var obj={};
obj[0] = "一";
obj[1] = "二";
obj[2] = "三";
obj.length = 3;
17.Window.onload和$(document).ready的區(qū)別?
1.執(zhí)行時(shí)間
window.onload必須等到頁(yè)面內(nèi)包括圖片的所有元素加載完畢后才能執(zhí)行匕坯。
$(document).ready()是DOM結(jié)構(gòu)繪制完畢后就執(zhí)行束昵,不必等到加載完畢。
2.編寫個(gè)數(shù)不同
window.onload不能同時(shí)編寫多個(gè)葛峻,如果有多個(gè)window.onload方法锹雏,只會(huì)執(zhí)行一個(gè)
$(document).ready()可以同時(shí)編寫多個(gè),并且都可以得到執(zhí)行
3.簡(jiǎn)化寫法
window.onload沒(méi)有簡(jiǎn)化寫法
$(document).ready(function(){})可以簡(jiǎn)寫成$(function(){});
Document.onload 是在結(jié)構(gòu)和樣式加載完才執(zhí)行js
Document.ready原生種沒(méi)有這個(gè)方法术奖,jquery中有 $().ready(function)
23.call和apply的區(qū)別礁遵?
call方法:
語(yǔ)法:call(thisObj,Object)
定義:調(diào)用一個(gè)對(duì)象的一個(gè)方法采记,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象佣耐。
說(shuō)明:
call 方法可以用來(lái)代替另一個(gè)對(duì)象調(diào)用一個(gè)方法。call 方法可將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對(duì)象挺庞。
如果沒(méi)有提供 thisObj 參數(shù)晰赞,那么 Global 對(duì)象被用作 thisObj。
apply方法:
語(yǔ)法:apply(thisObj选侨,[argArray])
定義:應(yīng)用某一對(duì)象的一個(gè)方法掖鱼,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。
說(shuō)明:
如果 argArray 不是一個(gè)有效的數(shù)組或者不是 arguments 對(duì)象援制,那么將導(dǎo)致一個(gè) TypeError戏挡。
如果沒(méi)有提供 argArray 和 thisObj 任何一個(gè)參數(shù),那么 Global 對(duì)象將被用作 thisObj晨仑, 并且無(wú)法被傳遞任何參數(shù)褐墅。