大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業指南 比較經典的Js面試題大匯總

比較經典的Js面試題大匯總

更新時間:2022-12-23 15:15:02 來源:動力節點 瀏覽1168次

1. 介紹 js 的基本數據類型。

js 一共有六種基本數據類型,分別是 Undefined、Null、Boolean、Number、String,還有在 ES6 中新增的 Symbol 類型,代表創建后獨一無二且不可變的數據類型,它的出現我認為主要是為了解決可能出現的全局變量沖突的問題。

2. JavaScript 有幾種類型的值?你能畫一下他們的內存圖嗎?

js 可以分為兩種類型的值,一種是基本數據類型,一種是復雜數據類型。

基本數據類型....(參考1)

復雜數據類型指的是 Object 類型,所有其他的如 Array、Date 等數據類型都可以理解為 Object 類型的子類。

兩種類型間的主要區別是它們的存儲位置不同,基本數據類型的值直接保存在棧中,而復雜數據類型的值保存在堆中,通過使用在棧中保存對應的指針來獲取堆中的值。

3. 什么是堆?什么是棧?它們之間有什么區別和聯系?

堆和棧的概念存在于數據結構中和操作系統內存中。

在數據結構中,棧中數據的存取方式為先進后出。而堆是一個優先隊列,是按優先級來進行排序的,優先級可以按照大小來規定。完全二叉樹是堆的一種實現方式。

在操作系統中,內存被分為棧區和堆區。

棧區內存由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。

堆區內存一般由程序員分配釋放,若程序員不釋放,程序結束時可能由垃圾回收機制回收。

4. 內部屬性 [[Class]] 是什么?

所有 typeof 返回值為 "object" 的對象(如數組)都包含一個內部屬性 [[Class]](我們可以把它看作一個內部的分類,而非
傳統的面向對象意義上的類)。這個屬性無法直接訪問,一般通過 Object.prototype.toString(..) 來查看。例如:

Object.prototype.toString.call( [1,2,3] );
// "[object Array]"

Object.prototype.toString.call( /regex-literal/i );
// "[object RegExp]"

5. 介紹 js 有哪些內置對象?

js 中的內置對象主要指的是在程序執行前存在全局作用域里的由 js 定義的一些全局值屬性、函數和用來實例化其他對象的構造函數對象。

一般我們經常用到的如全局變量值 NaN、undefined,全局函數如 parseInt()、parseFloat() 用來實例化對象的構造函數如 Date、Object 等,還有提供數學計算的單體內置對象如 Math 對象。

6. undefined 與 undeclared 的區別?

已在作用域中聲明但還沒有賦值的變量,是 undefined 的。相反,還沒有在作用域中聲明過的變量,是 undeclared 的。

對于 undeclared 變量的引用,瀏覽器會報引用錯誤,如 ReferenceError: b is not defined 。但是我們可以使用 typeof 的安全防范機制來避免報錯,因為對于 undeclared(或者 not defined )變量,typeof 會返回 "undefined"。

7. null 和 undefined 的區別?

首先 Undefined 和 Null 都是基本數據類型,這兩個基本數據類型分別都只有一個值,就是 undefined 和 null。

undefined 代表的含義是未定義,null 代表的含義是空對象。一般變量聲明了但還沒有定義的時候會返回 undefined,null主要用于賦值給一些可能會返回對象的變量,作為初始化。

undefined 在 js 中不是一個保留字,這意味著我們可以使用 undefined 來作為一個變量名,這樣的做法是非常危險的,它會影響我們對 undefined 值的判斷。但是我們可以通過一些方法獲得安全的 undefined 值,比如說 void 0。

當我們對兩種類型使用 typeof 進行判斷的時候,Null 類型化會返回 “object”,這是一個歷史遺留的問題。當我們使用雙等號對兩種類型的值進行比較時會返回 true,使用三個等號時會返回 false。

8. 如何獲取安全的 undefined 值?

因為 undefined 是一個標識符,所以可以被當作變量來使用和賦值,但是這樣會影響 undefined 的正常判斷。

表達式 void ___ 沒有返回值,因此返回結果是 undefined。void 并不改變表達式的結果,只是讓表達式不返回值。

按慣例我們用 void 0 來獲得 undefined。

9. 說幾條寫 JavaScript 的基本規范?

在平常項目開發中,我們遵守一些這樣的基本規范,比如說:

(1)一個函數作用域中所有的變量聲明應該盡量提到函數首部,用一個 var 聲明,不允許出現兩個連續的 var 聲明,聲明時如果變量沒有值,應該給該變量賦值對應類型的初始值,便于他人閱讀代碼時,能夠一目了然的知道變量對應的類型值。

(2)代碼中出現地址、時間等字符串時需要使用常量代替。

(3)在進行比較的時候吧,盡量使用'===', '!=='代替'==', '!='。

(4)不要在內置對象的原型上添加方法,如 Array, Date。

(5)switch 語句必須帶有 default 分支。

(6)for 循環必須使用大括號。

(7)if 語句必須使用大括號。

10. JavaScript 原型,原型鏈? 有什么特點?

在 js 中我們是使用構造函數來新建一個對象的,每一個構造函數的內部都有一個 prototype 屬性值,這個屬性值是一個對象,這個對象包含了可以由該構造函數的所有實例共享的屬性和方法。當我們使用構造函數新建一個對象后,在這個對象的內部將包含一個指針,這個指針指向構造函數的 prototype 屬性對應的值,在 ES5 中這個指針被稱為對象的原型。

一般來說我們是不應該能夠獲取到這個值的,但是現在瀏覽器中都實現了proto 屬性來讓我們訪問這個屬性,但是我們最好不要使用這個屬性,因為它不是規范中規定的。ES5 中新增了一個Object.getPrototypeOf() 方法,我們可以通過這個方法來獲取對象的原型。

當我們訪問一個對象的屬性時,如果這個對象內部不存在這個屬性,那么它就會去它的原型對象里找這個屬性,這個原型對象又會有自己的原型,于是就這樣一直找下去,也就是原型鏈的概念。原型鏈的盡頭一般來說都是 Object.prototype 所以這就是我們新建的對象為什么能夠使用 toString() 等方法的原因。

特點:

JavaScript 對象是通過引用來傳遞的,我們創建的每個新對象實體中并沒有一份屬于自己的原型副本。當我們修改原型時,與之相關的對象也會繼承這一改變。

以上就是“比較經典的Js面試題大匯總”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲一区二区三区日本久久九 | 亚洲综合图片 | 欧美中文网 | 老外黑人欧美一级毛片 | 日本高清一 | 久久99亚洲精品久久久久99 | 99热这就是里面只有精品 | 亚洲成人第一 | a级爱爱视频 | 99久久精品免费看国产四区 | 欧美最大成人毛片视频网站 | 国产香蕉一区二区在线观看 | 久久午夜夜伦伦鲁鲁片 | 大杳蕉伊人狼人久久一本线 | 亚洲国产成人最新精品资源 | 99视频在线免费观看 | 94在线 | 香蕉久久网站 | 天天干夜夜看 | 成人在线免费视频播放 | 久久久网久久久久合久久久久 | 成年超爽大片免费视频播放 | 四虎永久在线精品2022 | 欧美日韩一区二区三区麻豆 | 久久久精品久久 | 亚洲另类 专区 欧美 制服 | 一级毛片成人午夜 | 深夜在线观看网站 | 深夜网站在线观看 | 色妇色综合久久夜夜 | 精品精品国产欧美在线观看 | 亚洲视频在线不卡 | 99视频这里有精品 | 国产欧美成人不卡视频 | www.久久视频 | www.黄色片 | 国产精品玖玖玖在线观看 | 婷婷四房综合激情五月性色 | 国产色婷婷精品综合在线观看 | 好吊妞人成免费视频观看 | 狠狠色丁香婷婷久久综合考虑 |