web前端面試之js基礎(chǔ)(碼動未來)

web前端面試之js基礎(chǔ)(碼動未來)

3.1.1收苏、介紹js的基本數(shù)據(jù)類型

Undefined亿卤、Null、Boolean鹿霸、Number排吴、String、Symbol(new in ECMAScript 2015)


3.1.2懦鼠、介紹js有哪些內(nèi)置對象钻哩?

Object是 JavaScript 中所有對象的父對象

數(shù)據(jù)封裝類對象:Object、Array肛冶、Boolean街氢、Number 和 String

其他對象:Function、Arguments睦袖、Math珊肃、Date、RegExp馅笙、Error


3.1.3伦乔、說幾條寫JavaScript的基本規(guī)范?

1.不要在同一行聲明多個變量董习。

2.請使用 ===/!==來比較true/false或者數(shù)值

3.使用對象字面量替代new Array這種形式

4.不要使用全局函數(shù)烈和。

5.Switch語句必須帶有default分支

6.函數(shù)不應(yīng)該有時候有返回值,有時候沒有返回值皿淋。

7.For循環(huán)必須使用大括號

8.If語句必須使用大括號

9.for-in循環(huán)中的變量 應(yīng)該使用var關(guān)鍵字明確限定作用域招刹,從而避免作用域污染。


3.1.4沥匈、JavaScript有幾種類型的值蔗喂?,你能畫一下他們的內(nèi)存圖嗎

棧:原始數(shù)據(jù)類型(Undefined高帖,Null,Boolean畦粮,Number散址、String)

堆:引用數(shù)據(jù)類型(對象、數(shù)組和函數(shù))

兩種類型的區(qū)別是:存儲位置不同宣赔;

原始數(shù)據(jù)類型直接存儲在棧(stack)中的簡單數(shù)據(jù)段预麸,占據(jù)空間小、大小固定儒将,屬于被頻繁使用數(shù)據(jù)吏祸,所以放入棧中存儲;

引用數(shù)據(jù)類型存儲在堆(heap)中的對象,占據(jù)空間大钩蚊、大小不固定,如果存儲在棧中贡翘,將會影響程序運行的性能蹈矮;引用數(shù)據(jù)類型在棧中存儲了指針,該指針指向堆中該實體的起始地址鸣驱。當解釋器尋找引用值時泛鸟,會首先檢索其在棧中的地址,取得地址后從堆中獲得實體


3.1.5踊东、null北滥,undefined 的區(qū)別?

null表示一個對象被定義了闸翅,值為“空值”再芋;

undefined表示不存在這個值。

typeof undefined ????//"undefined"

undefined :是一個表示"無"的原始值或者說表示"缺少值"坚冀,就是此處應(yīng)該有一個值济赎,但是還沒有定義。當嘗試讀取時會返回 undefined遗菠;例如變量被聲明了联喘,但沒有賦值時,就等于undefined

typeof null ????????//"object"

null :是一個對象(空對象, 沒有任何屬性和方法)辙纬;

??? 例如作為函數(shù)的參數(shù)豁遭,表示該函數(shù)的參數(shù)不是對象;

注意:

在驗證null時贺拣,一定要使用 === 蓖谢,因為 == 無法分別 null 和 undefined

參考http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html


3.1.6、javascript代碼中的"use strict";是什么意思 ? 使用它區(qū)別是什么譬涡?

use strict是一種ECMAscript 5 添加的(嚴格)運行模式,這種模式使得 Javascript 在更嚴格的條件下運行,使JS編碼更加規(guī)范化的模式,消除Javascript語法的一些不合理闪幽、不嚴謹之處,減少一些怪異行為涡匀。默認支持的糟糕特性都會被禁用盯腌,比如不能用with,也不能在意外的情況下給全局變量賦值;

全局變量的顯示聲明,函數(shù)必須聲明在頂層陨瘩,不允許在非函數(shù)代碼塊內(nèi)聲明函數(shù),arguments.callee也不允許使用腕够;消除代碼運行的一些不安全之處,保證代碼運行的安全,限制函數(shù)中的arguments修改舌劳,嚴格模式下的eval函數(shù)的行為和非嚴格模式的也不相同;

提高編譯器效率帚湘,增加運行速度;

為未來新版本的Javascript標準化做鋪墊甚淡。


3.1.7大诸、如何判斷一個對象是否屬于某個類?

使用instanceof(待完善)

?? ?if(a instanceof Person){

????? ? alert('yes');

?}


3.1.8、new操作符具體干了什么呢?

1资柔、創(chuàng)建一個空對象焙贷,并且 this 變量引用該對象,同時還繼承了該函數(shù)的原型建邓。

2盈厘、屬性和方法被加入到 this 引用的對象中。

3官边、新創(chuàng)建的對象由 this 所引用沸手,并且最后隱式的返回 this 。

var obj ?= {};

obj.__proto__ = Base.prototype;

Base.call(obj);


3.1.9注簿、用原生JavaScript的實現(xiàn)過什么功能嗎契吉?

原生JavaScript常用的正則表達式

原生JavaScript實現(xiàn)字符串長度截取

原生JavaScript獲取域名主機

原生JavaScript清除空格

原生JavaScript替換全部

原生JavaScript轉(zhuǎn)義html標簽

原生JavaScript還原h(huán)tml標簽

原生JavaScript時間日期格式轉(zhuǎn)換

原生JavaScript判斷是否為數(shù)字類型

原生JavaScript設(shè)置cookie值

原生JavaScript獲取cookie值

原生JavaScript加入收藏夾

原生JavaScript設(shè)為首頁

原生JavaScript判斷IE6

原生JavaScript加載樣式文件

原生JavaScript返回腳本內(nèi)容

原生JavaScript清除腳本內(nèi)容

原生JavaScript動態(tài)加載腳本文件

原生JavaScript返回按ID檢索的元素對象

原生JavaScript返回瀏覽器版本內(nèi)容

原生JavaScript元素顯示的通用方法


3.1.10、documen.write和 innerHTML的區(qū)別

document.write只能重繪整個頁面

innerHTML可以重繪頁面的一部分


3.1.11诡渴、數(shù)組和對象有哪些原生方法捐晶,列舉一下?

數(shù)組:join():將數(shù)組元素按指定的分隔符拼接成一字符串返回妄辩,默認分隔符為英文逗號

sort(fn):數(shù)組排序,默認是按英文字母的ASC碼升序排列惑灵,比如apple排在orange前面

pop():刪除數(shù)組的最后一個元素,把數(shù)組長度減 1眼耀,并且返回它刪除的元素的值英支。

push(n1,n2,n3,....nx):向數(shù)組末尾添加一個或多個元素,并返回添加后數(shù)組的長度

reverse():顛倒數(shù)組中元素的順序

shift():刪除數(shù)組的第一個元素哮伟,并返回它刪除的那個元素

slice(start,end):用于截取start和end之間的數(shù)組元素并存入新數(shù)組返回

unshift(element1,.....,element):向數(shù)組開頭添加一個或多個元素干花,并返回添加后的數(shù)組長度。至少要傳一個參數(shù)楞黄。


3.1.12池凄、用js實現(xiàn)千位分隔符?(來源:前端農(nóng)民工,提示:正則+replace)

function commafy(num) {

?????num = num + '';

?????var reg = /(-?d+)(d{3})/;

?? ??if(reg.test(num)){

?????num = num.replace(reg, '$1,$2');

????}

??? return num;

}


3.1.13鬼廓、如何測試前端代碼么?知道BDD, TDD, Unit Test么? 知道怎么測試你的前端工程么(mocha, sinon, jasmin, qUnit..)?


3.1.14肿仑、前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?

Handlebars是一款很高效的模版引擎,提供語意化的模版語句,最大的兼容Mustache模版引擎, 提供最大的Mustache模版引擎兼容, 無需學(xué)習(xí)新語法即可使用;


3.1.15、簡述一下Handlebars的基本用法碎税?

Js語義模板庫首先type設(shè)置為?type="text/x-handlebars-template

使用Handlebars.compile()方法來預(yù)編譯模板?

#表示blocks’

?3.1.16柏副、簡述一下Handlerbars的對模板的基本處理流程, 如何編譯的蚣录?如何緩存的?

3.1.17眷篇、Object.is()與原來的比較操作符“ ===”萎河、“ ==”的區(qū)別?

兩等號判等,會在比較時進行類型轉(zhuǎn)換虐杯;

三等號判等(判斷嚴格)玛歌,比較時不進行隱式類型轉(zhuǎn)換,(類型不同則會返回false);

Object.is在三等號判等的基礎(chǔ)上特別處理了 NaN 擎椰、-0 和 +0 支子,保證 -0 和 +0 不再相同,但 Object.is(NaN, NaN) 會返回 true.Object.is 應(yīng)被認為有其特殊的用途达舒,而不能用它認為它比其它的相等對比更寬松或嚴格值朋。


3.1.18、請指出JavaScript宿主對象 (host objects) 和原生對象 (native objects) 的區(qū)別巩搏?

一昨登、原生對象

  ECMA-262把原生對象(native object)定義為“獨立于宿主環(huán)境的 ECMAScript 實現(xiàn)提供的對象”。

  Object贯底、Function丰辣、Array、String禽捆、Boolean笙什、Number、Date胚想、RegExp琐凭、Error、EvalError顿仇、RangeError淘正、ReferenceError、SyntaxError臼闻、TypeError鸿吆、URIError、ActiveXObject(服務(wù)器方面)述呐、Enumerator(集合遍歷類)惩淳、RegExp(正則表達式)

  由此可以看出,簡單來說乓搬,原生對象就是ECMA-262定義的類(引用類型)思犁。

二、宿主對象

  何為“宿主對象”进肯?ECMAScript中的“宿主”當然就是我們網(wǎng)頁的運行環(huán)境激蹲,即“操作系統(tǒng)”和“瀏覽器”。所有非原生對象都是宿主對象(host object)江掩,即由 ECMAScript 實現(xiàn)的宿主環(huán)境提供的對象学辱。

  所有的BOM和 DOM 對象都是宿主對象乘瓤。因為其對于不同的“宿主”環(huán)境所展示的內(nèi)容不同。其實說白了就是策泣,ECMAScript官方未定義的對象都屬于宿主對象衙傀,因為其未定義的對象大多數(shù)是自己通過ECMAScript程序創(chuàng)建的對象。TML DOM 是 W3C 標準(是 HTML 文檔對象模型的英文縮寫萨咕,Document Object Model for HTML)统抬。

  HTML DOM定義了用于 HTML 的一系列標準的對象,以及訪問和處理 HTML 文檔的標準方法危队。

  通過DOM聪建,可以訪問所有的 HTML 元素,連同它們所包含的文本和屬性交掏∽逼可以對其中的內(nèi)容進行修改和刪除,同時也可以創(chuàng)建新的元素盅弛。


3.1.19钱骂、例舉3種強制類型轉(zhuǎn)換和2種隱式類型轉(zhuǎn)換?

強制(parseInt,parseFloat,number)隱式(== – ===);


QQ技術(shù)交流群:815302226



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挪鹏,一起剝皮案震驚了整個濱河市见秽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌讨盒,老刑警劉巖解取,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異返顺,居然都是意外死亡禀苦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門遂鹊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來振乏,“玉大人,你說我怎么就攤上這事秉扑』塾剩” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵舟陆,是天一觀的道長误澳。 經(jīng)常有香客問我,道長秦躯,這世上最難降的妖魔是什么忆谓? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮踱承,結(jié)果婚禮上陪毡,老公的妹妹穿的比我還像新娘米母。我一直安慰自己,他們只是感情好毡琉,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妙色,像睡著了一般桅滋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上身辨,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天丐谋,我揣著相機與錄音,去河邊找鬼煌珊。 笑死号俐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的定庵。 我是一名探鬼主播吏饿,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔬浙!你這毒婦竟也來了猪落?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤畴博,失蹤者是張志新(化名)和其女友劉穎笨忌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俱病,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡官疲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亮隙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片途凫。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖咱揍,靈堂內(nèi)的尸體忽然破棺而出颖榜,到底是詐尸還是另有隱情,我是刑警寧澤煤裙,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布掩完,位于F島的核電站,受9級特大地震影響硼砰,放射性物質(zhì)發(fā)生泄漏且蓬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一题翰、第九天 我趴在偏房一處隱蔽的房頂上張望恶阴。 院中可真熱鬧诈胜,春花似錦、人聲如沸冯事。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昵仅。三九已至缓熟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摔笤,已是汗流浹背够滑。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吕世,地道東北人彰触。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像命辖,于是被迫代替她去往敵國和親况毅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,095評論 0 3
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,212評論 0 4
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5吮龄? 答:HTML5是最新的HTML標準俭茧。 注意:講述HT...
    kismetajun閱讀 27,422評論 1 45
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體漓帚。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 3,828評論 0 0
  • 鷓鴣天 落日寒鴉數(shù)點愁母债,男兒何不帶吳鉤? 斷鴻孤影城頭月尝抖,吹角連營夢難休毡们。 霹靂劍,萬兜鍪昧辽,沙場征戰(zhàn)霸鰲頭衙熔。 而今...
    七月牽機閱讀 473評論 4 8