日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端面试题整理

發布時間:2024/1/17 HTML 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端面试题整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們在js的學習中,往往很多東西看過之后,一段時間不用,就忘記了。或者當時就沒有深入的理解,能促使我們不斷深入學習的動力最好的辦法往往參加些面試,能找到自己的不足也能加深之前學的知識點的記憶。
整理最近的一些面試題

(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"//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.lengthvar 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 }

如有疑問請關注微信公眾號:前端之攻略,此公眾號我也會定期更新前端知識。

總結

以上是生活随笔為你收集整理的前端面试题整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。