摘要:整理最近的一些面試題請問有哪些數(shù)據(jù)數(shù)據(jù)類型,并畫出內(nèi)存圖有種簡單的數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型復雜的數(shù)據(jù)類型即引用數(shù)據(jù)類型包含對象,對象和等舉個例子引用類型數(shù)據(jù)在棧內(nèi)存中保存的實際上是對象在堆內(nèi)存中的引用地址。實際上改變的是堆內(nèi)存對象。
我們在js的學習中,往往很多東西看過之后,一段時間不用,就忘記了。或者當時就沒有深入的理解,能促使我們不斷深入學習的動力最好的辦法往往參加些面試,能找到自己的不足也能加深之前學的知識點的記憶。
整理最近的一些面試題
(1)請問js有哪些數(shù)據(jù)數(shù)據(jù)類型,并畫出內(nèi)存圖
js有5種簡單的數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型)Undefined、Null、Boolean、Number、String
復雜的數(shù)據(jù)類型(即引用數(shù)據(jù)類型) 包含Object對象,array對象和Function,Date等
舉個例子
引用類型數(shù)據(jù)在棧內(nèi)存中保存的實際上是對象在堆內(nèi)存中的引用地址。通過這個引用地址可以快速查找到保存中堆內(nèi)存中的對象。
var obj1 = new Object(); var obj2 = obj1; obj2.name = "我有名字了"; console.log(obj1.name); // 我有名字了
obj1賦值給onj2,實際上這個堆內(nèi)存對象在棧內(nèi)存的引用地址復制了一份給了obj2,但是實際上他們共同指向了同一個堆內(nèi)存對象。實際上改變的是堆內(nèi)存對象。
(2)下面代碼輸出結(jié)果
for (var i = 1; i <= 4; i++) { console.log(i) setTimeout(function timer() { console.log(i) // 5,5,5,5,5 }, 1000) }
答案:// 5,5,5,5,5
(3)下面代碼輸出結(jié)果
var foo = "hello"; (function() { var bar = " word" console.log(foo + bar) })() console.log(foo + bar)
//答案:報錯bar is not defined
(4)下面代碼輸出結(jié)果
var bar = true console.log(bar + 0) //1 console.log(bar + "xyz") //truexyz console.log(bar + true) //2 console.log(bar + false) //1 console.log(undefined == null) //true console.log(1 == true) //true console.log(2 == true) //false console.log(0 == false) //true console.log(0 == "") //true console.log(NaN == NaN) //false console.log([] == false) //true console.log([] == ![]) //true
補充一些可能會考到的例子
// Boolean + Number -> 數(shù)字相加 true + 1 // 2 // Boolean + Boolean -> 數(shù)字相加 false + false // 0 // Number + String -> 字符串連接 5 + "foo" // "5foo" // String + Boolean -> 字符串連接 "foo" + false // "foofalse" // String + String -> 字符串連接 "foo" + "bar" // "foobar" 減法 (-) 減法運算符使兩個操作數(shù)相減,結(jié)果是它們的差值。減法字符串都會試圖轉(zhuǎn)成數(shù)字 -"1"http://1 5 - 3 // 2 3 - 5 // -2 "15"-2 //13 "foo" - 3 // NaN "5" + 3 // 53 如果字符在前面,并且后面是加號(+)就是字符串拼接 +3 // 3 +"3" // 3 +true // 1 +false // 0 +null // 0 +function(val){ return val;} //NaN
(5)假設(shè)有這樣一個數(shù)組[1,2,3,4,5],現(xiàn)在想要左移或者右移N位,比如左移1位變成[2,3,4,5,1],右移1位變成[5,1,2,3,4],請寫一個函數(shù)實現(xiàn)
思路:假如左移的情況,如果左移2位,把原數(shù)組的左邊2個元素刪除,并把刪除的2個元素存儲在新建的數(shù)組中,最后把原數(shù)組刪除后的數(shù)組與刪除的數(shù)組連接起來,右移的情況也是把右移數(shù)量的元素刪除,并把刪除后的元素存儲起來,最后連接。
完整的例子:
var data = ["blue", "green", "red", "purple"]; var dataLength = data.length var deleteData; var resultData; function move(n) { if (n >= 0) { deleteData = data.splice(0, n); resultData = data.concat(deleteData); console.log(resultData); } else { deleteData = data.splice(dataLength + n, -n); resultData = deleteData.concat(data) console.log(resultData); } } move(3)
(6)有這樣一個URL http://www.baidu.com/item.htm...,請寫一段js程序提取url中的各個GET參數(shù)(參數(shù)名和參數(shù)個數(shù)不確定),將其按key-value形式返回到一個json結(jié)構(gòu)中
思路:
1、找出“?”的index 位置(url.indexOf("?"))
2、截取“?”后面的字符串(可以使用slice,substring,substr)
3、使用split把字符串分隔成字符串數(shù)組(str.split("&"))
4、循環(huán)字符串數(shù)組,在循環(huán)內(nèi)部主要代碼
for (i = 0; i < data.length; i++) { var data1 = data[i]; data2 = data1.split("=") key = data2[0]; value = data2[1]; JosnObject.key = value }
如有疑問請關(guān)注微信公眾號:前端之攻略,此公眾號我也會定期更新前端知識。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96727.html
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進而查漏補缺,比通過面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個和個經(jīng)典面試題前端開發(fā)面試題如何面試前端工程師很重要個變態(tài)題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進而查漏補缺,比通過面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個和個經(jīng)典面試題前端開發(fā)面試題如何面試前端工程師很重要個變態(tài)題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:字囊括上百個前端面試題的項目開源了這個項目是什么項目內(nèi)容這個項目目前在上剛剛開源主要內(nèi)容如下前端面試題主要整理了高頻且有一定難度的前端面試題對這些面試題進行解讀前端原理詳解針對一些有一定難度面試題涉及的知識點進行詳解比如涉及的編譯原理響應式 20W字囊括上百個前端面試題的項目開源了 這個項目是什么? 項目內(nèi)容 這個項目目前在GitHub上剛剛開源,主要內(nèi)容如下: 前端面試題: 主要整...
閱讀 3966·2021-11-24 09:38
閱讀 1440·2021-11-19 09:40
閱讀 2785·2021-11-18 10:02
閱讀 3708·2021-11-09 09:46
閱讀 1781·2021-09-22 15:27
閱讀 3121·2019-08-29 15:24
閱讀 1009·2019-08-29 12:40
閱讀 1693·2019-08-28 18:24