1. 程式人生 > >前端面試之js篇整理(一)

前端面試之js篇整理(一)

js的基本型別有哪些?引用型別有哪些?null和undefined的區別

js變數的值有兩種:
1.基本型別值:存放在棧記憶體的簡單資料型別。如Number、String 、Boolean、Null和Undefined這物種
2.引用型別值:存放在堆記憶體的中的物件。如Object 、Array 、Function 、Data

null :表示變數不存在,常常用作函式返回一個不存在的物件
Undefined:存在但是未定義,比如變數宣告沒有賦值,該變數就是undefined;呼叫函式中需要提供的引數沒有提供,該引數就是undefiend;函式沒有返回值,接收這個函式的變數就是Undefined等等

如何判斷一個變數是Array型別?如何判斷一個變數是Number型別?(都不止一種)

先說一下。檢測型別的操作符typeof 它可以檢測出string、function、object、number等,但是檢測不了Array,檢測Array,返回的值是’object’

所以需要使用其他方法去檢測是否為陣列型別:

  1. ES5提供了Array.isArray(‘要檢測的變數’)方法,如果是,返回true
  2. Object.prototype.toString.call(要檢測的變數),陣列返回”[object Array]”
  3. 從建構函式入手,obj instanceof Array

    是否為數字型別

1.使用typeof
2.使用isNaN

JS常見的dom操作api

  1. DOM的建立 : document.createElement('div')
  2. DOM的查詢:

    //DOM的查詢獲取
    var el = document.getElementById('xxx');
    //獲取父元素、父節點
    var parent = ele.parentNode;//只讀,沒有相容性問題
    //獲取子節點:
    var nodes = ele.childNodes;
    //當前元素的第一個/最後一個子元素節點
    var el = ele.firstChild;
    
  3. DOM的更改

    // 新增、刪除子元素
    ele.appendChild(el);
    ele.removeChild(el);
    // 替換子元素
    ele.replaceChild(el1, el2); // 插入子元素 parentElement.insertBefore(newElement, referenceElement); //克隆元素 ele.cloneNode(true) //該引數指示被複制的節點是否包括原節點的所有屬性和子節點
  4. 屬性操作

    // 獲取一個{name, value}的陣列
    var attrs = el.attributes;

    還有獲取、設定標籤屬性:getAttributesetAttribute;判斷、移除標籤屬性hasAttribute removeAttribute

解釋一下事件冒泡和事件捕獲

 一個完整的JS事件流是從window開始,最後回到window的一個過程
    事件捕獲指的是從document到觸發事件的那個節點,即自上而下的去觸發事件。相反的,事件冒泡是自下而上的去觸發事件。

先說一下事件捕獲:事件是從最上層也是最不精確的物件document開始進行觸發,然後到程式碼指定的精確元素去觸發
ele.addEventListener(事件,function,boolean)

假如父級有點選事件,子級也有點選事件,如果是設定了addEventListener最後一個引數為true,點選時候,就會先執行父級,在執行子級。。。

如果第3個引數設定為true,那麼事件在捕獲階段就開始觸發
設定為false,在冒泡階段觸發

假如父級有點選事件,子級也有點選事件,如果是設定了addEventListener最後一個引數為false,點選時候,就會先執行子級,在執行父級。。。
並且在子級的時候可以組織向上冒泡,最終結果就是隻執行子級的點選事件
可以使用e.stopPropagation();

對閉包的理解?什麼時候構成閉包?閉包的實現方法?閉包的優缺點?

閉包從形式上來看是 function return function;

我們都知道js中的變數有全域性變數和區域性變數兩種,根據圓形鏈,子物件會一級一級地向上尋找所有父物件的變數。所以,父物件的所有變數,對子物件都是可見的,反之則不成立;function內的區域性變數 可以通過 function return function 拿到全域性去操作,這形成了閉包

缺點:
function是屬於引用型別,所以函式內是存放在堆記憶體中;如果將函式的私有變數return 出來,就會造成記憶體的洩露

相關推薦

前端面試js整理()

js的基本型別有哪些?引用型別有哪些?null和undefined的區別 js變數的值有兩種: 1.基本型別值:存放在棧記憶體的簡單資料型別。如Number、String 、Boolean、Null和Undefined這物種 2.引用型別值:存放在堆記憶

前端面試CSS整理

盒模型,box-sizing 盒模型組成:content+padding+border+margin ; 在標準盒模型中,css中給元素設定的width和height就是content寬高 在怪異盒模型下:css中給元素設定的width和height=co

前端面試HTML整理

HTML5新特性,語義化 語義化標籤比起傳統的div+css的樣式佈局來說,更遵循W3C規則,有利於團隊的開發維護,更有利於SEO優化,方便其他裝置解析 舉幾個例說明: 標籤 語義化 <section></sect

前端面試JS閉包

前端面試之JS閉包 面試回答: 什麼是閉包 :閉包就是在函式裡定義函式,而且內部函式可以引用外部函式的引數和區域性變數,當外部函式返回這個內部函式時,內部函式引用的引數和區域性變數儲存在內部函式裡 為什麼要用閉包:因為js的函式作用域的關係,一般情況下外部是訪問不了函式內部的變數的,

前端面試(原生 js ) - 精確運算

一、面試題 問:開發的時候有用到過 Math 嗎? 答:很多啊。比如生成 GUID 的時候,就會用到 Math.random() 來生成隨機數。 問:別的呢?比如向下取整、向上取整? 答:向下取整是 floor(),向上取整是 ceil()。另外還可以用&nbs

前端面試大全——CSS

目錄 1.CSS 中類 (class) 和ID 的區別 class是類選擇器,可以作為通用樣式,在文件中多次使用。ID是id選擇器,理論上應該具有唯一性(即一個ID在文件中只能出現一次),如果

前端面試JS

javascript部分 (1):簡要的描述JavaScript 中的作用域鏈 任何一段JavaScript程式碼都對應一個作用域鏈,作用域鏈中存放一系列物件,程式碼中宣告的變數將作為物件的屬性存放。 在JavaScript的頂層程式碼中,作用域

前端面試指南js

JavaScript JavaScript的組成 JavaScript 由以下三部分組成: ECMAScript(核心):JavaScript 語言基礎 DOM(文件物件模型):規定了訪問HTML和XML的介面 BOM(瀏覽器物件模

前端面試道小冊筆記】JS基礎No.1

prim 轉字符串 獲取 筆記 特點 只需要 att -s 沒有 1、數據類型 原始值:boolean、null、undefined、number、string、symbol 2、類型轉換: 轉Boolean 在條件判斷時,除了 undefined, null, f

【JAVA秒會技術秒殺面試官】秒殺Java面試官——集合

tails category tail java cat 秒殺 試題 面試官 java面試 【JAVA秒會技術之秒殺面試官】秒殺Java面試官——集合篇(一) 【JAVA秒會技術之秒殺面試官】JavaEE常見面試題(三) http://blog.csdn.net/qq296

前端面試基礎-htmlH5新特性

-h 側邊欄 沒有 開發者 制作 article 廣告 隱藏 val h5的新特性(目前個人所了解)如下 語義化標簽 表單新特性 視頻(video)和音頻(audio) canvas畫布 svg繪圖 地理定位 為鼠標提供的拖放API webworker (重點)Stora

前端開發CSS

重要 utf import 無效 nbsp 出現 bsp 示例 減少 一、CSS介紹和語法 二、CSS引入方式 三、基本選擇器 四、高級選擇器 五、偽類選擇器 六、偽元素選擇器 1?? CSS介紹和語法   1、 CSS的介紹   (1)為什麽需要C

11-撩課大前端-面試寶典-第十

一、演算法題部分 1. 如何獲取瀏覽器URL中查詢字串中的引數 function getParamsWithUrl(url) { var args = url.split('?'); if (args[0] === url) {

21-撩課大前端-面試寶典-第二十

1.對async、await的理解,內部原理? ①async---宣告一個非同步函式: 自動將常規函式轉換成promise,返回值也是一個promise物件, 只有async函式內部的非同步操作執行完,才會執行then方法指定的回撥函式,內部可以使用await;  &nbs

前端面試模組化-3、require.js的用法

原文連結:http://www.ruanyifeng.com/blog/2012/11/require_js.html 一、為什麼要用require.js? 最早的時候,所有Javascript程式碼都寫在一個檔案裡面,只要載入這一個檔案就夠了。後來,程式碼越來越多,一個檔

2018web前端不好找工作web前端面試簡歷補救

web前端面試簡歷算是第一張臉,給HR/CTO的第一印象,弄好啦,就有面試的機會!? 關於前端面試簡歷簡單的介紹幾點吧。 1、關於簡歷如何寫。首先可以去招聘網站上面看看。那麼可以看哪些呢。比如在拉鉤上搜web前端這個關鍵詞,我們不需要去關注他需要幾年工作經驗等。直接看

我的IT夢——web前端開發HTML,CSS(

jpg 標記語言 方便 add body 前端 input cti 列表 HTML HTML全稱HyperText Markup Language(超文本標記語言) 標簽成對出現 <!DOCTYPE html> 文檔類型定義 < > 標

2017前端面試題Js(1)

load urn lis property eat hub bind tlist 方法的參數 1 . 請解釋事件代理 (event delegation) 當需要對很多元素添加事件的時,可以通過將事件添加到它們的父節點通過委托來觸發處理函數。其中利用到了瀏覽器的事件冒

python學習_day54_前端基礎js(2)

data 截取 定義 得到 let 結果 是什麽 index 插入   在JavaScript中除了null和undefined以外其他的數據類型都被定義成了對象,也可以用創建對象的方法定義變量,String、Math、Array、Date、RegExp都是JavaScri

面試JavaWeb(十三)

用戶 dma 方式 客戶 元素 back 控制 質量 服務器端 148,AJAX有哪些有點和缺點? 優點: 1、最大的一點是頁面無刷新,用戶的體驗非常好。 2、使用異步方式與服務器通信,具有更加迅速的響應能力。 3、可以把以前