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