【面試經驗分享】2022 前端知識複習——JavaScript 基礎篇

js 數據類型有哪些?

基本數據類型:string、number、boolean、undefined、null、symbol、bigint
引用數據類型:object(Array、Function、RegExp 不是數據類型,是類)

區別:堆棧內存存放位置不同

js 判斷數據類型的方法?

1. typeof(null->object、function->function)
2. instanceof (不能正確判斷基本數據類型)
3. constructor(原型可以更改,不可靠)
4. Object.prototype.toString.call()(返回當前實例所屬類信息 [object Object],需要封裝)

0.1 + 0.2 = ?

0.1 + 0.2 = 0.3...(15個0)...4
js 只有一個數字類型 number,是基於 IEEE 754 的雙精度浮點類型,浮點數計算存在誤差。

如何解決?
	1. (0.1*10 + 0.2 * 10)/10
	2. ES6 的 Number.EPSILON 定義了一個數字常量,作爲一個誤差範圍值。

什麼是閉包?

閉包是 JavaScript 的一個語法特性
閉包可以用一個公式來概括:閉包 = 函數 + 自由變量
js 變量分爲:全局變量、本地變量、自由變量。自由變量就是非全局變量和本地變量的變量,也可以指其他函數作用域或者塊級作用域內的變量。

上面公式結合自由變量定義再展開說就是:一個函數訪問或者是引用了其他函數作用域或塊級作用域內的變量,這麼一種語法特性就是閉包。

閉包的作用:
	1. 封裝私有變量,避免污染全局環境
	2. 提供對局部變量的間接訪問
	2. 延長變量的生命週期,防止其不被垃圾回收

閉包的缺陷:早期 IE 瀏覽器對閉包內的所有變量都不會進行銷燬,導致內存泄漏,現代瀏覽器基本上不會出現這種問題了。

作用域和作用域鏈是什麼?

作用域:變量的合法使用範圍,JavaScript 採用的是詞法作用域(作用域是由書寫代碼時函數聲明的位置決定)
作用域鏈:

原型和原型鏈是什麼?

js 實現繼承的方式?

函數裏面的 arguments 是什麼?

js 如何判斷數組中是否包含某個值?

什麼是高階函數?

說說 js 的 this?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章