JS面試經典知識(一)

前端面試題精選

原生JS

1.ES6的新特性:

let(****聲明變量)前端

const(****聲明常量,常量不能修改的量)es6

var****、let、const的區別面試

\1. let和const聲明變量不存在變量提高,若是要使用這個變量,咱們須要在變量定義以後使用;數組

\2. let和const不能重複聲明變量,若是重複聲明會報錯;瀏覽器

\3. 用let 和 const 在全局聲明變量不會給window增長屬性;函數

\4. let和const出如今代碼塊中,會把代碼塊(字面量聲明對象除外)變成塊級做用域,而且出現暫時 性死區 class(****建立類)工具

import/export(****基於ES6的模塊規範建立導入/導出模塊(文件/組件))this

new set(****數組去重)prototype

Symbol(****惟一的值) var a = Symbol('qqq')指針

...ary(****展開運算符、剩餘運算符)

**${}** 模板字符串

解構賦值 let {a} = obj; let [b] = ary

for of 循環

()=>{} 箭頭函數

箭頭函數與普通函數的區別:

\1. 箭頭函數是匿名函數,不能做爲構造函數,不能使用new

\2. 箭頭函數沒有原型屬性

3.this指向不一樣,箭頭函數的this是定義時所在的對象,普通函數看前面有沒有.,點前面是誰this 就是誰,沒有.就是window

\4. 不可使用arguments對象,該對象在函數體內不存在。

數組新增方法:flat、find、findIndex

對象新增方法: Object.assign() Object.values() Object.keys() Object.create()...

2.JS的數據類型

基本數據類型: number 數字; boolean 布爾值 :有兩個值 true、false ;string 字符串

null 空對象; undefined 未定義的值(不少瀏覽器的初始值是undefined)

Symbol() 產生一個惟一的值,和誰都不重複

null和undefined的區別:

null 是一個表示"無"的對象,轉爲數值時爲 0

undefined 是一個表示"無"的原始值,轉爲數值時爲 NaN

當聲明的變量還未被初始化時,變量的默認值爲 undefined

null 用來表示還沒有存在的對象,經常使用來表示函數企圖返回一個不存在的對象

undefined 表示 「缺乏值」,就是此處應該有一個值,可是尚未定義。

典型用法是:

\1. 變量被聲明瞭,但沒有賦值時,就等於 undefined

\2. 調用函數時,應該提供的參數沒有提供,該參數等於 undefined

\3. 對象沒有賦值的屬性,該屬性的值爲 undefined

\4. 函數沒有返回值時,默認返回 undefined

null 表示「沒有對象」,即該處不該該有值。

典型用法是:

\1. 做爲函數的參數,表示該函數的參數不是對象

\2. 做爲對象原型鏈的終點

引用數據類型:

對象

.普通對象

.數組對象

.正則對象(匹配字符串的規則)

.日期對象

.函數對象

...

對象的存儲過程:

\1. 開闢一個空間地址

\2. 把鍵值對存儲到這個空間地址的堆內存中

\3. 把這個對象指針賦值給變量名

let obj = {

a:1,

fn:(function (val) {

// 賦給fn的是自執行函數的執行結果 也就是一個undefined

// 該自執行函數只會執行一次

console.log(val);

})(obj.a)

};

let obj2 = obj;// 二者表明了同一個地址;

// 獲取屬性的值 obj.fn 或者 obj['fn']

// 新增屬性: obj.c = 100 或者 obj['c'] = 100

// 真刪除 delete obj.a (在嚴格模式下不支持該方法); 假刪除: obj.a = null;

// 引用類型小習題

let a = 3;

let b = new Number(3);

let c = 3;

console.log(a == b);

console.log(a === b);

console.log(b === c);

//=========================

const a = {};

const b = { key: "b" };

const c = { key: "c" };

a[b] = 123;

a[c] = 456;

console.log(a[b]);

基本數據類型與引用數據類型的區別:

基本數據類型是操做值,引用數據類型操做的是堆內存空間地址

布爾值轉換:0 NaN '' null undefined 轉化成布爾值是false,其他的都是true

檢驗有效數字的方法:isNaN

經常使用的數據類型檢測方式: typeof constructor instanceof Object.prototype.toString.call()

比較運算符:

== 相對比較:會進行默認的類型轉化; 若轉換以後的值相等,則結果就是true

=== 絕對比較,值不但要相同、類型也得相同。

引用數據類型之間的比較,就看是否是同一個地址;

邏輯運算符:

|| 表示或者,前邊成立給前邊,前邊不成立給後邊

&& 表示而且前邊成立給後邊,前邊不成立給前邊

本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈

相關文章
相關標籤/搜索