摘要:短路運算返回值是什么又稱為短路或,短路如果左側為真,則不再進行右側運算,同時返回左側表達式運算結果。上面是不存在的,所有結果為,轉成就是,那么就會運算,把賦值給的同時,返回值也是,所以打印返回結果是函數(shù)內部變量有哪些
DOM元素e的e.getAttribute(propName)和e.propName有什么區(qū)別和聯(lián)系
e.getAttribute(),是標準DOM操作文檔元素屬性的方法,具有通用性可在任意文檔上使用,返回元素在源文件中設置的屬性
e.propName通常是在HTML文檔中訪問特定元素的特性,瀏覽器解析元素后生成對應對象(如a標簽生成HTMLAnchorElement),這些對象的特性會根據(jù)特定規(guī)則結合屬性設置得到,對于沒有對應特性的屬性,只能使用getAttribute進行訪問
e.getAttribute()返回值是源文件中設置的值,類型是字符串或者null(有的實現(xiàn)返回"")
e.propName返回值可能是字符串、布爾值、對象、undefined等
大部分attribute與property是一一對應關系,修改其中一個會影響另一個,如id,title等屬性
一些布爾屬性的檢測設置需要hasAttribute和removeAttribute來完成,或者設置對應property
像link中href屬性,轉換成property的時候需要通過轉換得到完整URL
一些attribute和property不是一一對應如:form控件中對應的是defaultValue,修改或設置value property修改的是控件當前值,setAttribute修改value屬性不會改變value property
offsetWidth/offsetHeight,clientWidth/clientHeight與scrollWidth/scrollHeight的區(qū)別offsetWidth/offsetHeight返回值包含content + padding + border,效果與e.getBoundingClientRect()相同
clientWidth/clientHeight返回值只包含content + padding,如果有滾動條,也不包含滾動條
scrollWidth/scrollHeight返回值包含content + padding + 溢出內容的尺寸
1.引起內存泄漏的操作有哪些1.全局變量引起
2.閉包引起
3.dom清空,事件未清除
4.子元素存在引用
5.被遺忘的計時器
程序調用自身稱為遞歸,利用變量的原值推出新值稱為迭代,遞歸的優(yōu)點 大問題轉化為小問題,可以減少代碼量,同時應為代碼精簡,可讀性好, 缺點就是,遞歸調用浪費了空間,而且遞歸太深容易造成堆棧的溢出。迭代的好處 就是代碼運行效率好,因為時間只因循環(huán)次數(shù)增加而增加,而且沒有額外的空間開銷, 缺點就是代碼不如遞歸簡潔
參考:
深究遞歸和迭代的區(qū)別、聯(lián)系、優(yōu)缺點及實例對比
「遞歸」和「迭代」有哪些區(qū)別?
我們常常說js是單線程的,是指js執(zhí)行引擎是單線程的,除了這個單線程,還有一個 任務隊列,在執(zhí)行js代碼的過程中,執(zhí)行引擎遇到注冊的延時方法,如定時器,DOM事件, 會將這些方法交給相應的瀏覽器模塊處理,當這些延時方法有觸發(fā)條件去觸發(fā)的時候, 這些延時方法會被添加至任務隊列,而這些任務隊列中的方法只有js的主線程空閑了才會執(zhí)行, 這也就是說我們常常用的定時器定的時間參數(shù)只是一個觸發(fā)條件,具體多少時間后執(zhí)行其實還需要看 js主線程空閑與否
【轉向Javascript系列】從setTimeout說事件循環(huán)模型
深入淺出JavaScript事件循環(huán)機制(上)
深入淺出JavaScript事件循環(huán)機制(下)
并發(fā)模型與事件循環(huán)
不允許不使用var關鍵字去創(chuàng)建全局變量,拋出ReferenceError
不允許對變量使用delete操作符,拋ReferenceError
不可對對象的只讀屬性賦值,不可對對象的不可配置屬性使用delete操作符,不可為不可拓展的對象添加屬性,均拋- - TypeError
對象屬性名必須唯一
函數(shù)中不可有重名參數(shù)
在函數(shù)內部對修改參數(shù)不會反映到arguments中
淘汰arguments.callee和arguments.caller
不可在if內部聲明函數(shù)
拋棄with語句
setTimeout和setInterval的區(qū)別,包含內存方面的分析?setTimeout表示間隔一段時間之后執(zhí)行一次調用,而setInterval則是每間隔一段時間循環(huán)調用,直至clearInterval結束。 內存方面,setTimeout只需要進入一次隊列,不會造成內存溢出,setInterval因為不計算代碼執(zhí)行時間,有可能同時執(zhí)行多次代碼, 導致內存溢出。
JS 中settimeout和setinterval函數(shù)的區(qū)別
setTimeout() 和 setInterval() 本質區(qū)別在哪里?
懶加載就是根據(jù)用戶的瀏覽需要記載內容,也就是在用戶即將瀏覽完當前的內容時進行繼續(xù)加載內容,這種技術常常用來加載圖片的時候使用。我們判斷用戶是否即將瀏覽到底部之后進行在家內容 這時候可能會需要加載大量的內容,可以使用fragment來優(yōu)化一下,因為大部分是使用滑動和滾輪來觸發(fā)的,因此很有可能會不斷觸發(fā),可以使用函數(shù)節(jié)流做一個優(yōu)化,防止用戶不斷觸發(fā)。
字符串截取js字符串截取方法有substring、slice、substr三個方法,substring和slice都是指定截取的首尾索引值,不同的是傳遞負值的時候 substring會當做0來處理,而slice傳入負值的規(guī)則是-1指最后一個字符,substr方法則是第一個參數(shù)是開始截取的字符串,第二個是截取的字符數(shù)量, 和slice類似,傳入負值也是從尾部算起的。
介紹一下ES6的暫時性死區(qū)和塊級作用域 js設計模式請介紹一下裝飾者模式,并實現(xiàn)
在不改變元對象的基礎上,對這個對象進行包裝和拓展(包括添加屬性和方法),從而使這個對象可以有更復雜的功能。
介紹一下職責鏈模式?
在不改變元對象的基礎上,對這個對象進行包裝和拓展(包括添加屬性和方法),從而使這個對象可以有更復雜的功能。
詳解 Javascript十大常用設計模式
請說一下實現(xiàn)jsonp的實現(xiàn)思路?jsonp的原理是使用script標簽來實現(xiàn)跨域,因為script標簽的的src屬性是不受同源策略的影響的,因此可以使用其來跨域。一個最簡單的jsonp就是創(chuàng)建一個script標簽,設置src為相應的url,在url之后添加相應的callback,格式類似于 url?callback=xxx,服務端根據(jù)我們的callback來返回相應的數(shù)據(jù),類似于res.send(req.query.callback + "("+ data + ")"),這樣就實現(xiàn)了一個最簡單的jsonp
jsonp的原理與實現(xiàn)
fetch-jsonp源碼
這樣做的主要目的是在請求這些靜態(tài)資源的時候不會發(fā)送cookie,節(jié)省了流量,需要注意的是cookie是會發(fā)送給子域名的(二級域名),所以這些靜態(tài)資源是不會放在子域名下的, 而是多帶帶放在一個多帶帶的主域名下。同時還有一個原因就是瀏覽器對于一個域名會有請求數(shù)的限制,這種方法可以方便做CDN。
為什么淘寶、騰訊等會把靜態(tài)資源放在另外一個主域名下?
為什么很多網(wǎng)站的靜態(tài)資源會使用獨立的域名?
函數(shù)聲明表達式
function操作符
Function 構造函數(shù)
ES6:arrow function
js運算符 ===運算符判斷相等的流程是怎樣的1.如果兩個值不是相同類型,它們不相等
2.如果兩個值都是null或者都是undefined,它們相等
3.如果兩個值都是布爾類型true或者都是false,它們相等
4.如果其中有一個是NaN,它們不相等
5.如果都是數(shù)值型并且數(shù)值相等,他們相等, -0等于0
6.如果他們都是字符串并且在相同位置包含相同的16位值,他它們相等;如果在長度或者內容上不等,它們不相等;兩個字符串顯示結果相同但是編碼不同==和===都認為他們不相等
7.如果他們指向相同對象、數(shù)組、函數(shù),它們相等;如果指向不同對象,他們不相等
1.如果兩個值類型相同,按照===比較方法進行比較
2.如果類型不同,使用如下規(guī)則進行比較
3.如果其中一個值是null,另一個是undefined,它們相等
4.如果一個值是數(shù)字另一個是字符串,將字符串轉換為數(shù)字進行比較
5.如果有布爾類型,將true轉換為1,false轉換為0,然后用==規(guī)則繼續(xù)比較
6.如果一個值是對象,另一個是數(shù)字或字符串,將對象轉換為原始值然后用==規(guī)則繼續(xù)比較
7.其他所有情況都認為不相等
所有比較運算符都支持任意類型,但是比較只支持數(shù)字和字符串,所以需要執(zhí)行必要的轉換然后進行比較,轉換規(guī)則如下:
1.如果操作數(shù)是對象,轉換為原始值:如果valueOf方法返回原始值,則使用這個值,否則使用toString方法的結果,如果轉換失敗則報錯
2.經(jīng)過必要的對象到原始值的轉換后,如果兩個操作數(shù)都是字符串,按照字母順序進行比較(他們的16位unicode值的大?。?br>3.否則,如果有一個操作數(shù)不是字符串,將兩個操作數(shù)轉換為數(shù)字進行比較
如果有操作數(shù)是對象,轉換為原始值
此時如果有一個操作數(shù)是字符串,其他的操作數(shù)都轉換為字符串并執(zhí)行連接
否則:所有操作數(shù)都轉換為數(shù)字并執(zhí)行加法
"==" 和 "===" 有什么不同相同:
== 和 === 都是比較等值比較運算符,返回的布爾類型的比較結果。
不同:
1) == 是等值比較運算符,使用的是 抽象等值 比較算法。 === 是嚴格等值比較運算符,使用的 嚴格等值 比較算法。 2) == 運算符在比較值的時候,會根據(jù)兩者類型是否相同而做不同的處理, 在兩者不同類型的時候,會轉換類型后進行比較: 基本類型會轉成數(shù)字,引用類型會轉成對象原始值,然后再進行比較。 而 === 首先也會判斷類型是否一致,不同的是如果類型不一致則直接返回 false。短路運算
window.foo || (window.foo = "bar"); 返回值是什么?
又稱為短路或,短路:如果左側為真,則不再進行右側運算,同時返回左側表達式運算結果。函數(shù)內部arguments變量有哪些特性,有哪些屬性,如何將它轉換為數(shù)組
如果左側為假則執(zhí)行右側表達式運算,并返回右側計算結果。
上面window.foo是不存在的,所有結果為undefined,轉成boolean就是false,
那么就會運算 window.foo = "bar",
把 "bar" 賦值給 window.foo 的同時,
返回值也是 "foo",所以打印返回結果是 "bar"
arguments所有函數(shù)中都包含的一個局部變量,是一個類數(shù)組對象,對應函數(shù)調用時的實參。如果函數(shù)定義同名參數(shù)會在調用時覆蓋默認對象
arguments[index]分別對應函數(shù)調用時的實參,并且通過arguments修改實參時會同時修改實參
arguments.length為實參的個數(shù)(Function.length表示形參長度)
arguments.callee為當前正在執(zhí)行的函數(shù)本身,使用這個屬性進行遞歸調用時需注意this的變化
arguments.caller為調用當前函數(shù)的函數(shù)(已被遺棄)
轉換為數(shù)組:var args = Array.prototype.slice.call(arguments, 0);
前端面試題整理
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/102295.html
摘要:獲取的對象范圍方法獲取的是最終應用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據(jù)我測試不同環(huán)境結果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續(xù)更新中……,可以關注下github 項目地址 https:...
摘要:前言在大廠工作了年,當了年的前端面試官,把大廠常問的面試題與答案匯總在我的中。第題如何劫持的請求,提供思路難度阿里騰訊很多人在上搜索前端面試詳解,把答案倒背如流,但是問到如何劫持請求的時候就一臉懵逼,是因為還是停留在理論性階段。前言 在大廠工作了6年,當了3年的前端面試官,把大廠常問的面試題與答案匯總在我的Github中。希望對大家有所幫助,助力大家進入自己理想的企業(yè)。 項目地址是:git...
摘要:前言在大廠工作了年,當了年的前端面試官,把大廠常問的面試題與答案匯總在我的中。第題如何劫持的請求,提供思路難度阿里騰訊很多人在上搜索前端面試詳解,把答案倒背如流,但是問到如何劫持請求的時候就一臉懵逼,是因為還是停留在理論性階段。 前言 在大廠工作了6年,當了3年的前端面試官,把大廠常問的面試題與答案匯總在我的Github中。希望對大家有所幫助,助力大家進入自己理想的企業(yè)。 項目地址是:...
摘要:前言在大廠工作了年,當了年的前端面試官,把大廠常問的面試題與答案匯總在我的中。第題如何劫持的請求,提供思路難度阿里騰訊很多人在上搜索前端面試詳解,把答案倒背如流,但是問到如何劫持請求的時候就一臉懵逼,是因為還是停留在理論性階段。 前言 在大廠工作了6年,當了3年的前端面試官,把大廠常問的面試題與答案匯總在我的Github中。希望對大家有所幫助,助力大家進入自己理想的企業(yè)。 項目地址是:...
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進而查漏補缺,比通過面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個和個經(jīng)典面試題前端開發(fā)面試題如何面試前端工程師很重要個變態(tài)題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
閱讀 1674·2021-09-28 09:35
閱讀 1141·2019-08-30 15:54
閱讀 1669·2019-08-30 15:44
閱讀 3373·2019-08-30 14:09
閱讀 504·2019-08-29 14:05
閱讀 2670·2019-08-28 17:53
閱讀 1996·2019-08-26 13:41
閱讀 1725·2019-08-26 13:26