日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

20道JavaScript经典面试题

發布時間:2023/12/29 javascript 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20道JavaScript经典面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該篇文章整理了一些前端經典面試題,附帶詳解,涉及到JavaScript多方面知識點,滿滿都是干貨~建議收藏閱讀

前言

如果這篇文章有幫助到你,??關注+點贊??鼓勵一下作者,文章公眾號首發,關注 前端南玖 第一時間獲取最新的文章~

1.說一說JavaScript的數據類型以及存儲方式

JavaScript一共有8種數據類型

其中有7種基本數據類型:

ES5的5種:Null,undefined,Boolean,Number,String,

ES6新增:Symbol 表示獨一無二的值

ES10新增:BigInt 表示任意大的整數

一種引用數據類型:

Object(本質上是由一組無序的鍵值對組成)

包含function,Array,Date等。JavaScript不支持創建任何自定義類型的數據,也就是說JavaScript中所有值的類型都是上面8中之一。

存儲方式

  • 基本數據類型:直接存儲在內存中,占據空間小,大小固定,屬于被頻繁使用的數據。
  • 引用數據類型:同時存儲在內存與內存中,占據空間大,大小不固定。引用數據類型將指針存在中,將值存在中。當我們把對象值賦值給另外一個變量時,復制的是對象的指針,指向同一塊內存地址。

null 與 undefined的異同

相同點:

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

不同點:

  • undefined 代表的含義是未定義, null 代表的含義是空對象。

  • typeof null 返回’object’,typeof undefined 返回’undefined’

  • null == undefined // true null === undefined // false
  • 其實 null 不是對象,雖然 typeof null 會輸出 object,但是這只是 JS 存在的一個悠久 Bug。在 JS 的最初版本中使用的是 32 位系統,為了性能考慮使用低位存儲變量的類型信息,000 開頭代表是對象,然而 null 表示為全零,所以將它錯誤的判斷為 object 。雖然現在的內部類型判斷代碼已經改變了,但是對于這個 Bug 卻是一直流傳下來。

2.說說JavaScript中判斷數據類型的幾種方法

typeof

  • typeof一般用來判斷基本數據類型,除了判斷null會輸出"object",其它都是正確的
  • typeof判斷引用數據類型時,除了判斷函數會輸出"function",其它都是輸出"object"
console.log(typeof 6); // 'number' console.log(typeof true); // 'boolean' console.log(typeof 'nanjiu'); // 'string' console.log(typeof []); // 'object' []數組的數據類型在 typeof 中被解釋為 object console.log(typeof function(){}); // 'function' console.log(typeof {}); // 'object' console.log(typeof undefined); // 'undefined' console.log(typeof null); // 'object' null 的數據類型被 typeof 解釋為 object

對于引用數據類型的判斷,使用typeof并不準確,所以可以使用instanceof來判斷引用數據類型

instanceof

Instanceof 可以準確的判斷引用數據類型,它的原理是檢測構造函數的prototype屬性是否在某個實例對象的原型鏈上

原型知識點具體可以看我之前的文章:你一定要懂的JavaScript之原型與原型鏈

語法:

object instanceof constructorconsole.log(6 instanceof Number); // false console.log(true instanceof Boolean); // false console.log('nanjiu' instanceof String); // false console.log([] instanceof Array); // true console.log(function(){} instanceof Function); // true console.log({} instanceof Object); // true

constructor(構造函數)

當一個函數被定義時,JS引擎會為函數添加prototype屬性,然后在prototype屬性上添加一個constructor屬性,并讓其指向該函數。


當執行 let f = new F()時,F被當成了構造函數,f是F的實例對象,此時F原型上的constructor屬性傳遞到了f上,所以f.constructor===F

function F(){} let f = new F()f.constructor === F // true new Number(1).constructor === Number //true new Function().constructor === Function // true true.constructor === Boolean //true ''.constructor === String // true new Date().constructor === Date // true [].constructor === Array

??注意:

  • null和undefined是無效的對象,所以他們不會有constructor屬性
  • 函數的construct是不穩定的,主要是因為開發者可以重寫prototype,原有的construction引用會丟失,constructor會默認為Object
function F(){} F.prototype = {}let f = new F() f.constructor === F // falseconsole.log(f.constructor) //function Object(){..}

為什么會變成Object?

因為prototype被重新賦值的是一個{},{}是new Object()的字面量,因此 new Object()會將 Object 原型上的constructor 傳遞給 { },也就是 Object 本身。

因此,為了規范開發,在重寫對象原型時一般都需要重新給 constructor 賦值,以保證對象實例的類型不被篡改。

Object.prototype.toString.call()

toString() 是 Object 的原型方法,調用該方法,默認返回當前對象的 [[Class]] 。這是一個內部屬性,其格式為 [object Xxx] ,其中 Xxx 就是對象的類型。

對于 Object 對象,直接調用 toString() 就能返回 [object Object] 。而對于其他對象,則需要通過 call / apply 來調用才能返回正確的類型信息。

Object.prototype.toString.call('') ; // [object String] Object.prototype.toString.call(1) ; // [object Number] Object.prototype.toString.call(true) ; // [object Boolean] Object.prototype.toString.call(Symbol()); //[object Symbol] Object.prototype.toString.call(undefined) ; // [object Undefined] Object.prototype.toString.call(null) ; // [object Null] Object.prototype.toString.call(new Function()) ; // [object Function] Object.prototype.toString.call(new Date()) ; // [object Date] Object.prototype.toString.call([]) ; // [object Array] Object.prototype.toString.call(new RegExp()) ; // [object RegExp] Object.prototype.toString.call(new Error()) ; // [object Error] Object.prototype.toString.call(document) ; // [object HTMLDocument] Object.prototype.toString.call(window) ; //[object global] window 是全局對象 global 的引用

3.js數據類型轉換

在JavaScript中類型轉換有三種情況:

  • 轉換為數字(調用Number(),parseInt(),parseFloat()方法)
  • 轉換為字符串(調用.toString()或String()方法)
  • 轉換為布爾值(調用Boolean()方法)

null、undefined沒有.toString方法

轉換為數字

  • Number():可以把任意值轉換成數字,如果要轉換的字符串中有不是數字的值,則會返回NaN
Number('1') // 1 Number(true) // 1 Number('123s') // NaN Number({}) //NaN
  • parseInt(string,radix):解析一個字符串并返回指定基數的十進制整數,radix是2-36之間的整數,表示被解析字符串的基數。
parseInt('2') //2 parseInt('2',10) // 2 parseInt('2',2) // NaN parseInt('a123') // NaN 如果第一個字符不是數字或者符號就返回NaN parseInt('123a') // 123
  • parseFloat(string):解析一個參數并返回一個浮點數
parseFloat('123a') //123 parseFloat('123a.01') //123 parseFloat('123.01') //123.01 parseFloat('123.01.1') //123.01
  • 隱式轉換
let str = '123' let res = str - 1 //122str+1 // '1231' +str+1 // 124

轉換為字符串

  • .toString() ??注意:null,undefined不能調用
Number(123).toString() //'123' [].toString() //'' true.toString() //'true'
  • String() 都能轉
String(123) //'123' String(true) //'true' String([]) //'' String(null) //'null' String(undefined) //'undefined' String({}) //'[object Object]'
  • 隱式轉換:當+兩邊有一個是字符串,另一個是其它類型時,會先把其它類型轉換為字符串再進行字符串拼接,返回字符串
let a = 1 a+'' // '1'

轉換為布爾值

0, ‘’(空字符串), null, undefined, NaN會轉成false,其它都是true

  • Boolean()
Boolean('') //false Boolean(0) //false Boolean(1) //true Boolean(null) //false Boolean(undefined) //false Boolean(NaN) //false Boolean({}) //true Boolean([]) //true
  • 條件語句
let a if(a) {//... //這里a為undefined,會轉為false,所以該條件語句內部不會執行 }
  • 隱式轉換 !!
let str = '111' console.log(!!str) // true

4.{}和[]的valueOf和toString的返回結果?

  • valueOf:返回指定對象的原始值
對象返回值
Array返回數組對象本身。
Boolean布爾值。
Date存儲的時間是從 1970 年 1 月 1 日午夜開始計的毫秒數 UTC。
Function函數本身。
Number數字值。
Object對象本身。這是默認情況。
String字符串值。
Math 和 Error 對象沒有 valueOf 方法。
  • toString:返回一個表示對象的字符串。默認情況下,toString() 方法被每個 Object 對象繼承。如果此方法在自定義對象中未被覆蓋,toString() 返回 “[object type]”,其中 type 是對象的類型。
({}).valueOf() //{} ({}).toString() //'[object Object]' [].valueOf() //[] [].toString() //''

5.let,const,var的區別?

  • 變量提升:let,const定義的變量不會出現變量提升,而var會
  • 塊級作用域:let,const 是塊作用域,即其在整個大括號 {} 之內可見,var:只有全局作用域和函數作用域概念,沒有塊級作用域的概念。
  • 重復聲明:同一作用域下let,const聲明的變量不允許重復聲明,而var可以
  • 暫時性死區:let,const聲明的變量不能在聲明之前使用,而var可以
  • const 聲明的是一個只讀的常量,不允許修改

6.JavaScript作用域與作用域鏈

作用域:

簡單來說,作用域是指程序中定義變量的區域,它決定了當前執行代碼對變量的訪問權限

作用域鏈:

當可執行代碼內部訪問變量時,會先查找當前作用域下有無該變量,有則立即返回,沒有的話則會去父級作用域中查找…一直找到全局作用域。我們把這種作用域的嵌套機制稱為作用域鏈

詳細知識可以看我之前的文章:JavaScript深入之作用域與閉包

7.如何正確的判斷this指向?

this的綁定規則有四種:默認綁定,隱式綁定,顯式綁定,new綁定.

  • 函數是否在 new 中調用(new綁定),如果是,那么 this 綁定的是new中新創建的對象。
  • 函數是否通過 call,apply 調用,或者使用了 bind (即硬綁定),如果是,那么this綁定的就是指定的對象。
  • 函數是否在某個上下文對象中調用(隱式綁定),如果是的話,this 綁定的是那個上下文對象。一般是 obj.foo()
  • 如果以上都不是,那么使用默認綁定。如果在嚴格模式下,則綁定到 undefined,否則綁定到全局對象。
  • 如果把 null 或者 undefined 作為 this 的綁定對象傳入 call、apply 或者 bind, 這些值在調用時會被忽略,實際應用的是默認綁定規則。
  • 箭頭函數沒有自己的 this, 它的this繼承于上一層代碼塊的this。
  • 詳細知識可以看我之前的文章:this指向與call,apply,bind

    8.for…of,for…in,forEach,map的區別?

    for…of(不能遍歷對象)

    在可迭代對象(具有 iterator 接口)(Array,Map,Set,String,arguments)上創建一個迭代循環,調用自定義迭代鉤子,并為每個不同屬性的值執行語句,不能遍歷對象

    let arr=["前端","南玖","ssss"];for (let item of arr){console.log(item)} //前端 南玖 ssss//遍歷對象 let person={name:"南玖",age:18,city:"上海"} for (let item of person){console.log(item) } // 我們發現它是不可以的 我們可以搭配Object.keys使用 for(let item of Object.keys(person)){console.log(person[item]) } // 南玖 18 上海

    for…in

    for…in循環:遍歷對象自身的和繼承的可枚舉的屬性, 不能直接獲取屬性值。可以中斷循環。

    let person={name:"南玖",age:18,city:"上海"}let text=""for (let i in person){text+=person[i]}// 輸出:南玖18上海//其次在嘗試一些數組let arry=[1,2,3,4,5]for (let i in arry){console.log(arry[i])} //1 2 3 4 5

    forEach

    forEach: 只能遍歷數組,不能中斷,沒有返回值(或認為返回值是undefined)。

    let arr=[1,2,3]; const res = arr.forEach(item=>{console.log(item*3) }) // 3 6 9 console.log(res) //undefined console.log(arr) // [1,2,3]

    map

    map: 只能遍歷數組,不能中斷,返回值是修改后的數組。

    let arr=[1,2,3]; const res = arr.map(item=>{return res+1 }) console.log(res) //[2,3,4] console.log(arr) // [1,2,3]

    總結

    • forEach 遍歷列表值,不能使用 break 語句或使用 return 語句
    • for in 遍歷對象鍵值(key),或者數組下標,不推薦循環一個數組
    • for of 遍歷列表值,允許遍歷 Arrays(數組), Strings(字符串), Maps(映射), Sets(集合)等可迭代的數據結構等.在 ES6 中引入的 for of 循環,以替代 for in 和 forEach() ,并支持新的迭代協議。
    • for in循環出的是key,for of循環出的是value;
    • for of是ES6新引入的特性。修復了ES5的for in的不足;
    • for of不能循環普通的對象,需要通過和Object.keys()搭配使用。

    9.說說你對原型鏈的理解?

    每個函數(類)天生自帶一個屬性prototype,屬性值是一個對象,里面存儲了當前類供實例使用的屬性和方法 「(顯示原型)」

    在瀏覽器默認給原型開辟的堆內存中有一個constructor屬性:存儲的是當前類本身(??注意:自己開辟的堆內存中默認沒有constructor屬性,需要自己手動添加)「(構造函數)」

    每個對象都有一個__proto__屬性,這個屬性指向當前實例所屬類的原型(不確定所屬類,都指向Object.prototype)「(隱式原型)」

    當你試圖獲取一個對象的某個屬性時,如果這個對象本身沒有這個屬性,那么它會去它的隱式原型__proto__(也就是它的構造函數的顯示原型prototype)中查找。「(原型鏈)」

    詳細知識可以看我之前的文章:你一定要懂的JavaScript之原型與原型鏈

    10.說一說三種事件模型?

    事件模型

    DOM0級模型: ,這種模型不會傳播,所以沒有事件流的概念,但是現在有的瀏覽器支持以冒泡的方式實現,它可以在網頁中直接定義監聽函數,也可以通過 js屬性來指定監聽函數。這種方式是所有瀏覽器都兼容的。

    IE 事件模型: 在該事件模型中,一次事件共有兩個過程,事件處理階段,和事件冒泡階段。事件處理階段會首先執行目標元素綁定的監聽事件。然后是事件冒泡階段,冒泡指的是事件從目標元素冒泡到 document,依次檢查經過的節點是否綁定了事件監聽函數,如果有則執行。這種模型通過 attachEvent 來添加監聽函數,可以添加多個監聽函數,會按順序依次執行。

    DOM2 級事件模型: 在該事件模型中,一次事件共有三個過程,第一個過程是事件捕獲階段。捕獲指的是事件從 document 一直向下傳播到目標元素,依次檢查經過的節點是否綁定了事件監聽函數,如果有則執行。后面兩個階段和 IE 事件模型的兩個階段相同。這種事件模型,事件綁定的函數是 addEventListener,其中第三個參數可以指定事件是否在捕獲階段執行。

    事件委托

    事件委托指的是把一個元素的事件委托到另外一個元素上。一般來講,會把一個或者一組元素的事件委托到它的父層或者更外層元素上,真正綁定事件的是外層元素,當事件響應到需要綁定的元素上時,會通過事件冒泡機制從而觸發它的外層元素的綁定事件上,然后在外層元素上去執行函數。

    事件傳播(三個階段)

  • 捕獲階段–事件從 window 開始,然后向下到每個元素,直到到達目標元素事件或event.target。
  • 目標階段–事件已達到目標元素。
  • 冒泡階段–事件從目標元素冒泡,然后上升到每個元素,直到到達 window。
  • 事件捕獲

    當事件發生在 DOM 元素上時,該事件并不完全發生在那個元素上。在捕獲階段,事件從window開始,一直到觸發事件的元素。window----> document----> html----> body ---->目標元素

    事件冒泡

    事件冒泡剛好與事件捕獲相反,當前元素---->body ----> html---->document ---->window。當事件發生在DOM元素上時,該事件并不完全發生在那個元素上。在冒泡階段,事件冒泡,或者事件發生在它的父代,祖父母,祖父母的父代,直到到達window為止。

    如何阻止事件冒泡

    w3c的方法是e.stopPropagation(),IE則是使用e.cancelBubble = true。例如:

    window.event?window.event.cancelBubble = true : e.stopPropagation();

    return false也可以阻止冒泡。

    11.JS延遲加載的方式

    JavaScript會阻塞DOM的解析,因此也就會阻塞DOM的加載。所以有時候我們希望延遲JS的加載來提高頁面的加載速度。

    • 把JS放在頁面的最底部
    • script標簽的defer屬性:腳本會立即下載但延遲到整個頁面加載完畢再執行。該屬性對于內聯腳本無作用 (即沒有 「src」 屬性的腳本)。
    • Async是在外部JS加載完成后,瀏覽器空閑時,Load事件觸發前執行,標記為async的腳本并不保證按照指定他們的先后順序執行,該屬性對于內聯腳本無作用 (即沒有 「src」 屬性的腳本)。
    • 動態創建script標簽,監聽dom加載完畢再引入js文件

    12.說說什么是模塊化開發?

    模塊化的開發方式可以提高代碼復用率,方便進行代碼的管理。通常一個文件就是一個模塊,有自己的作用域,只向外暴露特定的變量和函數。

    幾種模塊化方案

    • 第一種是CommonJS 方案,它通過 require 來引入模塊,通過 module.exports 定義模塊的輸出接口。

    • 第二種是 AMD 方案,這種方案采用異步加載的方式來加載模塊,模塊的加載不影響后面語句的執行,所有依賴這個模塊的語句都定義在一個回調函數里,等到加載完成后再執行回調函數。require.js 實現了 AMD 規范。

    • 第三種是 CMD 方案,這種方案和 AMD 方案都是為了解決異步模塊加載的問題,sea.js 實現了 CMD 規范。它和require.js的區別在于模塊定義時對依賴的處理不同和對依賴模塊的執行時機的處理不同。

    • 第四種方案是ES6 提出的方案,使用 import 和 export 的形式來導入導出模塊。

    CommonJS

    Node.js是commonJS規范的主要踐行者。這種模塊加載方案是服務器端的解決方案,它是以同步的方式來引入模塊的,因為在服務端文件都存儲在本地磁盤,所以讀取非常快,所以以同步的方式加載沒有問題。但如果是在瀏覽器端,由于模塊的加載是使用網絡請求,因此使用異步加載的方式更加合適。

    // 定義模塊a.js var title = '前端'; function say(name, age) {console.log(`我是${name},今年${age}歲,歡迎關注我~`); } module.exports = { //在這里寫上需要向外暴露的函數、變量say: say,title: title }// 引用自定義的模塊時,參數包含路徑,可省略.js var a = require('./a'); a.say('南玖', 18); //我是南玖,今年18歲,歡迎關注我~

    AMD與require.js

    AMD規范采用異步方式加載模塊,模塊的加載不影響它后面語句的運行。所有依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成之后,這個回調函數才會運行。這里介紹用require.js實現AMD規范的模塊化:用require.config()指定引用路徑等,用define()定義模塊,用require()加載模塊。

    CMD與sea.js

    CMD是另一種js模塊化方案,它與AMD很類似,不同點在于:AMD 推崇依賴前置、提前執行,CMD推崇依賴就近、延遲執行。此規范其實是在sea.js推廣過程中產生的。

    ES6 Module

    ES6 在語言標準的層面上,實現了模塊功能,而且實現得相當簡單,旨在成為瀏覽器和服務器通用的模塊解決方案。其模塊功能主要由兩個命令構成:export和import。export命令用于規定模塊的對外接口,import命令用于輸入其他模塊提供的功能。

    // 定義模塊a.js var title = '前端'; function say(name, age) {console.log(`我是${name},今年${age}歲,歡迎關注我~`); } export { //在這里寫上需要向外暴露的函數、變量say,title }// 引用自定義的模塊時,參數包含路徑,可省略.js import {say,title} from "./a" say('南玖', 18); //我是南玖,今年18歲,歡迎關注我~

    CommonJS 與 ES6 Module 的差異

    CommonJS 模塊輸出的是一個值的拷貝,ES6 模塊輸出的是值的引用。

    • CommonJS 模塊輸出的是值的拷貝,也就是說,一旦輸出一個值,模塊內部的變化就影響不到這個值。
    • ES6 模塊的運行機制與 CommonJS 不一樣。JS 引擎對腳本靜態分析的時候,遇到模塊加載命令import,就會生成一個只讀引用。等到腳本真正執行時,再根據這個只讀引用,到被加載的那個模塊里面去取值。換句話說,ES6 的import有點像 Unix 系統的“符號連接”,原始值變了,import加載的值也會跟著變。因此,ES6 模塊是動態引用,并且不會緩存值,模塊里面的變量綁定其所在的模塊。

    CommonJS 模塊是運行時加載,ES6 模塊是編譯時輸出接口。

    • 運行時加載: CommonJS 模塊就是對象;即在輸入時是先加載整個模塊,生成一個對象,然后再從這個對象上面讀取方法,這種加載稱為“運行時加載”。
    • 編譯時加載: ES6 模塊不是對象,而是通過 export 命令顯式指定輸出的代碼,import時采用靜態命令的形式。即在import時可以指定加載某個輸出值,而不是加載整個模塊,這種加載稱為“編譯時加載”。

    CommonJS 加載的是一個對象(即module.exports屬性),該對象只有在腳本運行完才會生成。而 ES6 模塊不是對象,它的對外接口只是一種靜態定義,在代碼靜態解析階段就會生成。

    推薦閱讀前端模塊化理解

    13.說說JS的運行機制

    推薦閱讀探索JavaScript執行機制

    14.如何在JavaScript中比較兩個對象?

    對于兩個非基本類型的數據,我們用==或===都指示檢查他們的引用是否相等,并不會檢查實際引用指向的值是否相等。

    例如,默認情況下,數組將被強制轉換成字符串,并使用逗號連接所有元素

    let a = [1,2,3] let b = [1,2,3] let c = "1,2,3" a == b // false a == c // true b == c // true

    一般比較兩個對象會采用遞歸來比較

    15.說說你對閉包的理解,以及它的原理和應用場景?

    一個函數和對其周圍(詞法環境)的引用捆綁在一起(或者說函數被引用包圍),這樣一個組合就是閉包(「closure」

    閉包原理

    函數執行分成兩個階段(預編譯階段和執行階段)。

    • 在預編譯階段,如果發現內部函數使用了外部函數的變量,則會在內存中創建一個“閉包”對象并保存對應變量值,如果已存在“閉包”,則只需要增加對應屬性值即可。
    • 執行完后,函數執行上下文會被銷毀,函數對“閉包”對象的引用也會被銷毀,但其內部函數還持用該“閉包”的引用,所以內部函數可以繼續使用“外部函數”中的變量

    利用了函數作用域鏈的特性,一個函數內部定義的函數會將包含外部函數的活動對象添加到它的作用域鏈中,函數執行完畢,其執行作用域鏈銷毀,但因內部函數的作用域鏈仍然在引用這個活動對象,所以其活動對象不會被銷毀,直到內部函數被燒毀后才被銷毀。

    優點

  • 可以從內部函數訪問外部函數的作用域中的變量,且訪問到的變量長期駐扎在內存中,可供之后使用
  • 避免變量污染全局
  • 把變量存到獨立的作用域,作為私有成員存在
  • 缺點

  • 對內存消耗有負面影響。因內部函數保存了對外部變量的引用,導致無法被垃圾回收,增大內存使用量,所以使用不當會導致內存泄漏
  • 對處理速度具有負面影響。閉包的層級決定了引用的外部變量在查找時經過的作用域鏈長度
  • 可能獲取到意外的值(captured value)
  • 應用場景

    • 模塊封裝,防止變量污染全局
    var Person = (function(){var name = '南玖'function Person() {console.log('work for qtt')}Person.prototype.work = function() {}return Person })()
    • 循環體中創建閉包,保存變量
    for(var i=0;i<5;i++){(function(j){setTimeOut(() => {console.log(j)},1000)})(i) }

    推薦閱讀:JavaScript深入之作用域與閉包

    16.Object.is()與比較操作符==、===的區別?

    • ==會先進行類型轉換再比較
    • ===比較時不會進行類型轉換,類型不同則直接返回false
    • Object.is()在===基礎上特別處理了NaN,-0,+0,保證-0與+0不相等,但NaN與NaN相等

    ==操作符的強制類型轉換規則

    • 字符串和數字之間的相等比較,將字符串轉換為數字之后再進行比較。
    • 其他類型和布爾類型之間的相等比較,先將布爾值轉換為數字后,再應用其他規則進行比較。
    • null 和 undefined 之間的相等比較,結果為真。其他值和它們進行比較都返回假值。
    • 對象和非對象之間的相等比較,對象先調用 ToPrimitive 抽象操作后,再進行比較。
    • 如果一個操作值為 NaN ,則相等比較返回 false( NaN 本身也不等于 NaN )。
    • 如果兩個操作值都是對象,則比較它們是不是指向同一個對象。如果兩個操作數都指向同一個對象,則相等操作符返回true,否則,返回 false。
    '1' == 1 // true '1' === 1 // false NaN == NaN //false +0 == -0 //true +0 === -0 // true Object.is(+0,-0) //false Object.is(NaN,NaN) //true

    17.call與apply、bind的區別?

    實際上call與apply的功能是相同的,只是兩者的傳參方式不一樣,而bind傳參方式與call相同,但它不會立即執行,而是返回這個改變了this指向的函數。

    推薦閱讀:this指向與call,apply,bind

    18.說說你了解哪些前端本地存儲?

    推薦閱讀:這一次帶你徹底了解前端本地存儲

    19.說說JavaScript數組常用方法

    向數組添加元素的方法:
  • push:向數組的末尾追加 返回值是添加數據后數組的新長度,改變原有數組
  • unshift:向數組的開頭添加 返回值是添加數據后數組的新長度,改變原有數組
  • splice:向數組的指定index處插入 返回的是被刪除掉的元素的集合,會改變原有數組
  • 向數組刪除元素的方法:
  • pop():從尾部刪除一個元素 返回被刪除掉的元素,改變原有數組
  • shift():從頭部刪除一個元素 返回被刪除掉的元素,改變原有數組
  • splice:在index處刪除howmany個元素 返回的是被刪除掉的元素的集合,會改變原有數組
  • 數組排序的方法:
  • reverse():反轉,倒置 改變原有數組
  • sort():按指定規則排序 改變原有數組
  • 數組迭代方法

    參數: 每一項上運行的函數, 運行該函數的作用域對象(可選)

    every()

    對數組中的每一運行給定的函數,如果該函數對每一項都返回true,則該函數返回true

    var arr = [10,30,25,64,18,3,9] var result = arr.every((item,index,arr)=>{return item>3 }) console.log(result) //false

    some()
    對數組中的每一運行給定的函數,如果該函數有一項返回true,就返回true,所有項返回false才返回false

    var arr2 = [10,20,32,45,36,94,75] var result2 = arr2.some((item,index,arr)=>{return item<10 }) console.log(result2) //false

    filter()

    對數組中的每一運行給定的函數,會返回滿足該函數的項組成的數組

    // filter 返回滿足要求的數組項組成的新數組 var arr3 = [3,6,7,12,20,64,35] var result3 = arr3.filter((item,index,arr)=>{return item > 3 }) console.log(result3) //[6,7,12,20,64,35]

    map()

    對數組中的每一元素運行給定的函數,返回每次函數調用的結果組成的數組

    // map 返回每次函數調用的結果組成的數組 var arr4 = [1,2,3,4,5,6] var result4 = arr4.map((item,index,arr)=>{return `<span>${item}</span>` }) console.log(result4) /*[ '<span>1</span>','<span>2</span>','<span>3</span>','<span>4</span>','<span>5</span>','<span>6</span>' ]*/

    forEach()

    對數組中的每一元素運行給定的函數,沒有返回值,常用來遍歷元素

    // forEach var arr5 = [10,20,30] var result5 = arr5.forEach((item,index,arr)=>{console.log(item) }) console.log(result5) /* 10 20 30 undefined 該方法沒有返回值 */

    reduce()

    reduce()方法對數組中的每個元素執行一個由你提供的reducer函數(升序執行),將其結果匯總為單個返回值

    const array = [1,2,3,4] const reducer = (accumulator, currentValue) => accumulator + currentValue;// 1 + 2 + 3 + 4 console.log(array1.reduce(reducer));

    20.JavaScript為什么要進行變量提升,它導致了什么問題?

    變量提升的表現是,在變量或函數聲明之前訪問變量或調用函數而不會報錯。

    原因

    JavaScript引擎在代碼執行前有一個解析的過程(預編譯),創建執行上線文,初始化一些代碼執行時需要用到的對象。

    當訪問一個變量時,會到當前執行上下文中的作用域鏈中去查找,而作用域鏈的首端指向的是當前執行上下文的變量對象,這個變量對象是執行上下文的一個屬性,它包含了函數的形參、所有的函數和變量聲明,這個對象的是在代碼解析的時候創建的。

    首先要知道,JS在拿到一個變量或者一個函數的時候,會有兩步操作,即解析和執行。

    • 在解析階段

      JS會檢查語法,并對函數進行預編譯。解析的時候會先創建一個全局執行上下文環境,先把代碼中即將執行的變量、函數聲明都拿出來,變量先賦值為undefined,函數先聲明好可使用。在一個函數執行之前,也會創建一個函數執行上下文環境,跟全局執行上下文類似,不過函數執行上下文會多出this、arguments和函數的參數。

      • 全局上下文:變量定義,函數聲明
      • 函數上下文:變量定義,函數聲明,this,arguments
    • 在執行階段,就是按照代碼的順序依次執行。

    那為什么會進行變量提升呢?主要有以下兩個原因:

    • 提高性能
    • 容錯性更好

    (1)提高性能 在JS代碼執行之前,會進行語法檢查和預編譯,并且這一操作只進行一次。這么做就是為了提高性能,如果沒有這一步,那么每次執行代碼前都必須重新解析一遍該變量(函數),而這是沒有必要的,因為變量(函數)的代碼并不會改變,解析一遍就夠了。

    在解析的過程中,還會為函數生成預編譯代碼。在預編譯時,會統計聲明了哪些變量、創建了哪些函數,并對函數的代碼進行壓縮,去除注釋、不必要的空白等。這樣做的好處就是每次執行函數時都可以直接為該函數分配棧空間(不需要再解析一遍去獲取代碼中聲明了哪些變量,創建了哪些函數),并且因為代碼壓縮的原因,代碼執行也更快了。

    (2)容錯性更好 變量提升可以在一定程度上提高JS的容錯性,看下面的代碼:

    a = 1 var a console.log(a) //1

    如果沒有變量提升,這段代碼就會報錯

    導致的問題

    var tmp = new Date();function fn(){console.log(tmp);if(false){var tmp = 'hello nan jiu';} } fn(); // undefined

    在這個函數中,原本是要打印出外層的tmp變量,但是因為變量提升的問題,內層定義的tmp被提到函數內部的最頂部,相當于覆蓋了外層的tmp,所以打印結果為undefined。

    var tmp = 'hello nan jiu';for (var i = 0; i < tmp.length; i++) {console.log(tmp[i]); } console.log(i); // 13

    由于遍歷時定義的i會變量提升成為一個全局變量,在函數結束之后不會被銷毀,所以打印出來13。

    總結

    • 解析和預編譯過程中的聲明提升可以提高性能,讓函數可以在執行時預先為變量分配棧空間
    • 聲明提升還可以提高JS代碼的容錯性,使一些不規范的代碼也可以正常執行
    • 函數是一等公民,當函數聲明與變量聲明沖突時,變量提升時函數優先級更高,會忽略同名的變量聲明

    覺得文章不錯,可以點個贊呀_ 歡迎關注南玖~

    總結

    以上是生活随笔為你收集整理的20道JavaScript经典面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产精品久久久久久久久久了 | 黄色a在线| 日韩免费高清 | 日韩在线播放欧美字幕 | 日韩欧美一区二区三区在线观看 | 天天色天天操综合网 | 国产黄色av影视 | 在线三级播放 | 色久五月| 日日日日日 | 99热这里有 | 337p日本欧洲亚洲大胆裸体艺术 | 精品久久久精品 | 久久国内精品 | 免费在线色 | 国产手机在线 | 久热免费在线观看 | 成人国产精品 | 欧美日韩国产区 | 国产精品日韩在线 | 日韩免费观看视频 | 天天爱天天 | 青青河边草观看完整版高清 | 欧洲一区二区在线观看 | 久久免费试看 | 久久99久久99精品免费看小说 | 久久国产精品免费一区 | 人人精品久久 | 91免费视频黄 | 国产日韩欧美自拍 | 日韩精品一区二区免费 | 日韩精品中文字幕有码 | 亚洲国产欧美在线人成大黄瓜 | 四虎影视成人永久免费观看亚洲欧美 | 狠狠色丁香婷婷综合 | 国产另类av | 综合久久久久久 | 成年人黄色在线观看 | 2024国产精品视频 | 国产91亚洲 | 中文字幕久久精品一区 | 人人爽人人做 | 久久久91精品国产一区二区三区 | 色婷婷88av视频一二三区 | 欧美成人影音 | 天堂av色婷婷一区二区三区 | 在线成人免费 | 在线a视频 | 成年人免费在线观看网站 | a在线v| 欧美乱码精品一区二区 | 91九色丨porny丨丰满6 | 在线综合色 | 国产精品视频在线看 | 国产特级毛片aaaaaaa高清 | 99热精品在线观看 | 玖玖视频在线 | 国产精品白丝av | 欧美日韩国产一区 | 日日干日日 | 中文字幕av在线播放 | 国产精品18久久久久久久久 | www久久国产 | 国产精品永久在线 | 婷婷五综合 | 91手机在线看片 | 日韩成人精品一区二区 | 国产精品一区免费看8c0m | 国产69精品久久久久久久久久 | 国产高清在线免费观看 | 久久久久福利视频 | 日韩精品 在线视频 | 欧美aⅴ在线观看 | 中文亚洲欧美日韩 | 在线免费性生活片 | 亚洲精品免费播放 | 久久精品国产v日韩v亚洲 | 欧美精品久久久久久久久久久 | 久久69精品久久久久久久电影好 | 激情综合五月天 | 精品视频123区在线观看 | 国产精品日韩欧美 | 日日爽天天操 | 久草免费在线视频 | 亚洲国产中文字幕在线观看 | 亚洲高清在线视频 | 久久久久国产一区二区三区 | 国产香蕉久久精品综合网 | 欧美日韩中文在线 | 2017狠狠干| 国产亚洲精品久久久久5区 成人h电影在线观看 | www.日本色 | 久久99精品国产 | 免费在线观看日韩视频 | 成人亚洲综合 | 在线精品亚洲 | 久久久久人人 | 精品福利视频在线 | 在线久热 | 成人免费在线观看av | 国产精品热 | 色婷婷综合久久久久中文字幕1 | 国产午夜三级一二三区 | 久久蜜臀一区二区三区av | 亚洲欧美乱综合图片区小说区 | 欧美最猛性xxxxx(亚洲精品) | 亚洲精品视频免费在线观看 | 香蕉视频亚洲 | 日韩精品一区二区三区视频播放 | 欧美国产亚洲精品久久久8v | 999久久久国产精品 高清av免费观看 | 99在线高清视频在线播放 | 国产精品日韩久久久久 | av在线电影免费观看 | 欧美性色xo影院 | 六月丁香婷婷网 | 伊人天天操| 美女久久网站 | 91成人免费电影 | 国产精品久久久久久999 | 黄色电影在线免费观看 | 偷拍区另类综合在线 | 中文字幕在线看片 | 超碰精品在线观看 | 久草资源在线观看 | 免费看成人a| 午夜18视频在线观看 | 久久久综合精品 | 欧美婷婷综合 | 亚洲国产一区在线观看 | 日本在线观看一区二区三区 | 免费在线a| 97在线视频免费 | 99久久er热在这里只有精品15 | 久青草视频在线观看 | 亚洲精品18日本一区app | 免费看一及片 | 久草在线播放视频 | 五月天中文字幕 | 99色| 久久尤物电影视频在线观看 | 黄色网址中文字幕 | 中文字幕在线播出 | 在线视频专区 | 国产一级黄色免费看 | 中文字幕一区二区三 | 在线欧美a| 成人在线观看资源 | 免费亚洲视频 | 国产一区播放 | 亚洲成人第一区 | 国产精品色在线 | 国产a视频免费观看 | 婷婷久久久久 | 日韩在线视频播放 | 亚洲欧美日韩一区二区三区在线观看 | 人人插人人艹 | 日本三级人妇 | 国产精品中文字幕在线 | 欧美日韩国产亚洲乱码字幕 | 欧美日韩后 | 中中文字幕av在线 | 国产成人在线看 | 久久午夜国产精品 | 久久艹欧美 | 嫩草91影院 | 在线视频成人 | 麻豆91精品91久久久 | 九精品| 视频在线在亚洲 | 精品国产一区二区三区久久久蜜月 | 最新不卡av | 国产手机在线观看 | 国产精品久久久久久久久久 | 亚洲涩涩一区 | 免费av一级电影 | 国际精品久久久 | 成年美女黄网站色大片免费看 | 国产精品美女999 | 欧美日韩国产一区二区三区在线观看 | 日本久久视频 | 久久视频一区二区 | 亚洲涩综合 | 亚洲电影免费 | av成人资源| 九九久久久久99精品 | 欧美精品在线观看免费 | 日韩国产在线观看 | 日本精品视频一区 | 美女网站视频久久 | 在线观看一级视频 | 国产人免费人成免费视频 | 久青草国产在线 | 99在线视频精品 | 国产丝袜制服在线 | www.狠狠色.com | www.xxx.性狂虐| 九色porny真实丨国产18 | 欧美日韩国产欧美 | 久久99欧美| 啪啪免费观看网站 | 国产一级久久久 | 久久久99精品免费观看app | 日韩免费一级电影 | 免费av观看 | 国产主播大尺度精品福利免费 | 韩日av在线 | 在线视频1卡二卡三卡 | 中文字幕精品在线 | www.狠狠操 | 最近日韩中文字幕中文 | 中文日韩在线 | 国产蜜臀av | 亚洲91网站 | 婷婷色网视频在线播放 | 亚洲精品久久久久中文字幕m男 | 91女神的呻吟细腰翘臀美女 | 黄色免费在线视频 | 国产五十路毛片 | 毛片视频网址 | 日韩精品视频免费专区在线播放 | 欧美少妇xxxxxx | 国产一区二区在线播放视频 | 日韩精品中文字幕一区二区 | 五月婷婷综合激情网 | 中文资源在线播放 | 日韩欧美国产精品 | 在线观看 国产 | 91高清免费在线观看 | 成人免费在线电影 | 在线影视 一区 二区 三区 | 久久综合久久88 | 精品一区二区视频 | 日韩在线免费视频观看 | 国产乱老熟视频网88av | 精品国产观看 | 久操中文字幕在线观看 | 久久久久久网站 | 91精品国产网站 | 不卡av电影在线 | 国产小视频免费在线观看 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 日本激情视频中文字幕 | 中文字幕在线播放一区二区 | 色综合天天色综合 | 天天操天天操天天操天天 | 狠狠狠狠狠操 | 在线观看国产日韩 | 国产精品久久av | 日韩av黄 | 日韩欧美观看 | 美女视频黄的免费的 | 精品国产视频在线 | 久久精品牌麻豆国产大山 | 天天干天天干天天干天天干天天干天天干 | 九九九毛片 | 国产免费大片 | 国产精品原创视频 | 狠狠狠狠狠狠狠狠干 | 亚洲特级片 | 97超碰国产精品女人人人爽 | 中午字幕在线 | 人人看人人做人人澡 | 在线观看视频在线观看 | 久久任你操| 高潮久久久久久 | 美州a亚洲一视本频v色道 | 日韩av免费观看网站 | 久久国产视屏 | 日韩欧美高清在线 | 狠狠干激情 | 欧美高清成人 | 992tv成人免费看片 | 国产美女精品在线 | 久久人人爽人人爽 | 日韩一二区在线 | 色婷婷av一区二 | 黄色的视频网站 | 亚洲,播放 | 久久成人国产精品一区二区 | 片网址| 99久久精品国产一区二区三区 | va视频在线 | 欧美一级视频免费 | 日日摸日日爽 | 91麻豆视频网站 | 久久美女视频 | 夜夜骑日日操 | 97在线观视频免费观看 | 西西4444www大胆无视频 | 黄色毛片在线看 | 四虎成人av | 亚洲精品男人的天堂 | 99精品免费观看 | 久久国产欧美日韩 | 深爱婷婷网| 亚洲深夜影院 | 丁香色婷婷 | 亚洲国产wwwccc36天堂 | 欧美成人一区二区 | 国产亚洲精品成人av久久影院 | 玖玖精品在线 | 91在线观看视频 | 日日夜夜精品免费视频 | 天天操天天草 | 99视频精品视频高清免费 | 最近免费在线观看 | 手机av片 | 国产精品国产三级国产不产一地 | 狠狠干夜夜爱 | 国内精品久久久久久久久久久久 | 黄在线免费观看 | 色九九在线 | 91福利在线导航 | 天天干天天看 | 在线天堂日本 | 亚洲视频久久久久 | 久久久久电影 | 久久亚洲福利视频 | 久久久久二区 | 久久久久久欧美二区电影网 | 四虎在线免费观看视频 | av国产在线观看 | 91精品国产自产在线观看 | 91九色视频国产 | 成人午夜精品久久久久久久3d | 亚洲激情精品 | 综合在线观看 | 国产真实精品久久二三区 | 国产明星视频三级a三级点| 一级黄色免费 | 婷婷免费视频 | 亚洲丝袜一区二区 | 人人艹视频 | 国产成人99av超碰超爽 | 精品 一区 在线 | 伊人久久av| www成人av | 欧美一区二区三区在线 | 片网站| 亚洲精品男人天堂 | 国产成人精品综合久久久久99 | 久久久91精品国产 | 欧美日韩中文字幕视频 | 91尤物国产尤物福利在线播放 | 91激情小视频| 一二三区高清 | 激情电影影院 | 中文字幕人成人 | 亚洲精品在线免费看 | 久久综合视频网 | 亚洲精欧美一区二区精品 | 在线导航av | 精品国产福利在线 | 亚洲精品黄网站 | 五月婷婷网站 | 在线观看小视频 | 五月天色网站 | 久久久精品免费看 | 久久99操| 免费性网站 | 精品国产一区二区三区久久久蜜月 | 久久国内精品 | 色干综合 | 国产午夜一区二区 | 中文字幕在线播放第一页 | 99在线热播 | 久久不卡日韩美女 | 香蕉视频导航 | 天天视频亚洲 | 国产精品粉嫩 | 免费黄色网址网站 | 国产日本高清 | 免费看污污视频的网站 | 久久福利精品 | 久久精品中文字幕少妇 | 99电影456麻豆| 精品视频国产 | 手机av永久免费 | 99精品欧美一区二区 | 一二三区视频在线 | 成人av在线亚洲 | 美女露久久 | 91成人精品 | 国产精品theporn | 国产在线探花 | 国产免费又粗又猛又爽 | 激情综合色图 | 久久艹影院 | 久久人人爽人人爽人人片 | 毛片基地黄久久久久久天堂 | 国产视频高清 | 久久99亚洲网美利坚合众国 | 国产护士hd高朝护士1 | 丁香久久久| 天天操夜夜干 | 日韩av福利在线 | 男女拍拍免费视频 | 黄色特级毛片 | 97人人艹 | 久久国产影院 | 国产 日韩 在线 亚洲 字幕 中文 | 日韩视频欧美视频 | 国产精品一区二区三区99 | av黄色一级片 | 久久国产精品视频 | 国产精品久久影院 | 97**国产露脸精品国产 | 丝袜美腿在线视频 | 天天射天天爱天天干 | a资源在线| 成人av在线影视 | 日韩伦理一区二区三区av在线 | 久久99久久99精品免观看软件 | 天天搞天天干 | 免费一级片在线 | 在线免费观看视频一区二区三区 | 91视频免费看片 | 精品国产美女在线 | 免费在线一区二区 | 国产精品久久久久久久久久三级 | 亚洲国产视频直播 | 免费视频久久久 | 亚洲精品日韩一区二区电影 | 国产麻豆果冻传媒在线观看 | 91九色视频| 日韩三级中文字幕 | 国产精品成人一区二区 | 亚洲国产精品一区二区久久hs | 丁香婷婷激情啪啪 | 亚洲一区二区三区毛片 | 在线看的av网站 | 欧美日韩在线电影 | 国产精品久久久久久爽爽爽 | 日韩免 | 五月天婷亚洲天综合网鲁鲁鲁 | 1000部国产精品成人观看 | a黄色| 日韩亚洲欧美中文字幕 | www久久精品 | 国产91影院 | 国产理论免费 | 在线观看的黄色 | 高清一区二区三区 | 99久久精品日本一区二区免费 | 国产日韩欧美在线看 | 日日夜夜狠狠操 | 久久久人人爽 | 久久你懂得 | 国产91在| 狠狠操精品 | 蜜臀av一区 | 亚洲精品97 | 欧美日韩在线精品 | 色综合天天综合 | 亚洲精品小区久久久久久 | 日韩高清毛片 | a天堂一码二码专区 | 久久久在线视频 | 日韩av播放在线 | 免费看的毛片 | 亚洲黄色在线观看 | 91免费试看 | 人人爽人人爽人人爽 | 在线观看视频亚洲 | 婷婷色狠狠 | 国产成人精品一区二区 | 国产男女爽爽爽免费视频 | 欧美黄色成人 | 亚洲六月丁香色婷婷综合久久 | 亚洲国产日韩欧美 | 69国产盗摄一区二区三区五区 | 日韩视频一区二区三区在线播放免费观看 | 国产精品麻豆免费版 | 久久久精品国产免费观看一区二区 | 中文字幕资源网在线观看 | 91中文在线| 99久久精品免费看国产四区 | 中文字幕久久亚洲 | 亚洲精区二区三区四区麻豆 | va视频在线观看 | 欧美天天综合网 | av免费电影在线观看 | 中文字幕在线观看网站 | 天天综合人人 | 9ⅰ精品久久久久久久久中文字幕 | 亚洲电影免费 | 99久久精品免费看国产四区 | 日韩欧美xxxx | 在线黄色观看 | 日韩免费看视频 | 国产视频精品久久 | 开心激情五月婷婷 | 国产美女视频免费 | 国产短视频在线播放 | 欧美日韩中文字幕在线视频 | 欧美一区二区三区在线看 | 伊人狠狠色丁香婷婷综合 | 99热 精品在线 | 精品亚洲二区 | 欧美亚洲成人免费 | 色婷婷av一区| 99精品免费久久久久久久久日本 | 久久精品香蕉视频 | 成人禁用看黄a在线 | 色94色欧美 | 国产麻豆精品免费视频 | 日韩激情视频在线观看 | av网站在线免费观看 | 麻豆影视网 | 五月婷婷丁香色 | 免费看国产精品 | 午夜精品婷婷 | 日韩在线免费高清视频 | mm1313亚洲精品国产 | 国产 欧美 日本 | 免费aa大片 | 成人黄色电影在线 | 成年人在线视频观看 | 久久精品视频免费观看 | 欧美日韩国产伦理 | 日韩欧美视频一区 | 国内精品视频在线播放 | 91在线精品观看 | 中文字幕免费看 | 99热 精品在线 | 国产白浆视频 | 免费观看久久 | 欧洲精品二区 | 天天操天天操天天操天天操 | 国产欧美综合在线观看 | 久久精品99久久久久久2456 | 91精品国产自产在线观看永久 | 日日夜夜精品免费观看 | 久久国色夜色精品国产 | 久久国产精品久久久 | 中文字幕免费播放 | 久久精品久久久久久久 | 日本狠狠干 | 在线观看av麻豆 | 激情av网 | 免费黄色网址大全 | 日本在线观看一区二区三区 | 麻豆综合网 | 国产麻豆精品一区二区 | 亚洲综合小说 | 美女视频免费精品 | 综合久久精品 | 伊人五月婷 | 国产在线第三页 | www.夜夜爱 | 国产美女免费看 | 亚洲伊人婷婷 | 国产成人精品一区二区在线 | 日日干夜夜操视频 | a视频免费看 | 午夜视频一区二区 | 激情av五月婷婷 | 午夜精品一区二区三区在线播放 | 久久艹国产视频 | 欧美 日韩 国产 中文字幕 | 久久久久久久久久久久电影 | 中文字幕免费成人 | 一区二区三区在线观看免费视频 | 一级特黄aaa大片在线观看 | 婷婷六月综合亚洲 | 国产视频一区精品 | 国产精品一区二区麻豆 | 丁香婷婷射 | 国产久视频 | 亚洲人成人天堂h久久 | 国产精品视频99 | 草久久av | 国产精品一区二区三区久久久 | 97成人在线免费视频 | 久99久视频 | 日韩av福利在线 | 久久免费福利视频 | 91麻豆精品国产 | 国产高清不卡一区二区三区 | 激情五月激情综合网 | 成人精品视频久久久久 | 91香蕉视频| 免费网站在线观看成人 | 色综合a | 开心激情久久 | 免费人成网ww44kk44 | 999久久久精品视频 日韩高清www | 一区视频在线 | 不卡中文字幕av | 黄色片网站 | 国产一区欧美一区 | 99热手机在线观看 | 久久久久国产精品免费免费搜索 | 91精品国产综合久久福利 | 久久精品www人人爽人人 | 在线免费观看视频 | 免费一区在线 | 国产精品麻豆视频 | 中文字幕免费一区 | 香蕉久久久久 | 欧美精品国产综合久久 | 国产乱码精品一区二区蜜臀 | 国产精品久久影院 | 欧美性受极品xxxx喷水 | 亚洲aaa级 | 日韩欧美69 | 丁香婷婷色月天 | 999久久久免费视频 午夜国产在线观看 | 91香蕉国产在线观看软件 | 久久超| 777视频在线观看 | 亚洲精品2区 | 97精品在线观看 | 天天综合天天做 | 国产精品久久久久久久久久不蜜月 | 五月婷婷六月丁香 | 粉嫩av一区二区三区免费 | 热re99久久精品国产66热 | 久久精品视频3 | 九九九九色| 亚洲综合在线播放 | 亚洲欧美激情精品一区二区 | 久久久免费在线观看 | 99热这里只有精品免费 | 欧美人zozo| 日本一区二区高清不卡 | 91精品国产自产在线观看永久 | 五月婷婷国产 | 久草在线视频中文 | 久久精品这里精品 | 一区二区影视 | 免费在线观看av电影 | 91九色性视频 | 欧美做受高潮1 | 国产精品久久久久久久av电影 | 国产xvideos免费视频播放 | 蜜臀av夜夜澡人人爽人人 | 欧美一级视频免费 | 久久黄色网| 免费日韩 | 午夜精品久久久久久久久久久久久久 | 激情图片qvod | 免费a v观看 | 黄色91在线观看 | 国产污视频在线观看 | 日韩午夜视频在线观看 | 亚洲91视频 | 日日添夜夜添 | 99视频精品视频高清免费 | 最新日韩在线观看 | 日韩在线精品一区 | 97精品国产一二三产区 | 午夜视频亚洲 | 一区二区三区四区五区在线 | 婷婷在线视频观看 | 日韩精品免费一区二区三区 | 亚洲精品久久久久久国 | 色婷婷狠狠干 | 黄色字幕网| 精品无人国产偷自产在线 | 在线观看黄网 | 久久高清免费观看 | av大片免费看| 久草网站在线观看 | 国产不卡av在线 | 中文字幕日韩在线播放 | 国产视频一区精品 | 天天操天天舔天天爽 | 精品一区二区在线免费观看 | 国产高清视频在线 | 欧美精品在线观看一区 | 91视视频在线直接观看在线看网页在线看 | 黄色影院在线免费观看 | 免费亚洲一区二区 | 色多多视频在线观看 | 久久久999精品视频 国产美女免费观看 | 九九99| 九九色在线观看 | 91精品在线免费观看 | 在线观看激情av | 日韩av一区二区在线 | 日韩欧美综合视频 | 亚洲视频精品 | 精壮的侍卫呻吟h | 91免费网址| 麻豆91视频 | 伊人av综合| 国产精品久久久久免费观看 | 激情伊人五月天 | 成年人免费av网站 | 狠狠操电影网 | 日韩高清在线观看 | 日本中文不卡 | 九九热在线精品 | 久要激情网 | 超碰成人免费电影 | 欧美在线久久 | 久久久久国产精品免费 | 丁香花在线视频观看免费 | 27xxoo无遮挡动态视频 | 狠狠的日 | 国产日韩精品一区二区 | 久久成人精品电影 | 国内揄拍国内精品 | 亚洲国产999 | 91麻豆精品一区二区三区 | 国产xx视频 | 人人澡超碰碰 | 一级一片免费观看 | 黄色片网站av | 日日天天av| 亚洲第一久久久 | 日黄网站| 91精品爽啪蜜夜国产在线播放 | 成人免费观看完整版电影 | av在线电影播放 | 黄色av成人在线 | 日韩精品在线免费播放 | 国产精品永久久久久久久久久 | 国产不卡免费av | 久久九九久久 | 午夜视频在线观看一区二区 | 干天天| 免费看色的网站 | 日本最新一区二区三区 | 色网av | 亚洲在线视频观看 | 国产视频91在线 | 香蕉视频国产在线 | 国产亚洲精品bv在线观看 | 97在线观视频免费观看 | 日韩中文字幕在线 | 亚洲综合视频在线播放 | 精品一二三区视频 | 五月婷久 | 国产福利一区二区三区视频 | 91久久久久久国产精品 | 99精品免费久久久久久久久日本 | 丁香色婷 | 国产一级不卡视频 | 麻豆 videos| 中文字幕第一页在线vr | 色多视频在线观看 | 久久免费中文视频 | 日韩精品在线看 | 久热av在线 | 国内精品久久天天躁人人爽 | 日韩精品一区二区三区三炮视频 | 免费看片网页 | 九九涩涩av台湾日本热热 | 97国产精品亚洲精品 | 国产日韩在线视频 | 亚洲午夜精品久久久久久久久 | 日韩va在线观看 | 国产精品永久免费在线 | 99免费看片| 99精品国产一区二区三区不卡 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产又粗又硬又长又爽的视频 | 深夜男人影院 | 亚洲国产三级在线观看 | 国产第一福利网 | 8x成人免费视频 | 91av视频在线观看 | 特级黄录像视频 | 日韩欧美视频二区 | 国产不卡视频 | 五月天婷婷综合 | 久久久久久国产精品美女 | 国产日韩精品久久 | 免费在线观看国产精品 | 日韩理论片在线观看 | 91亚洲欧美 | 国产精久久久久久妇女av | 日韩69视频 | 久久久久电影网站 | 黄p网站在线观看 | 欧美一区二区免费在线观看 | 久草视频国产 | 91精品国产三级a在线观看 | 免费在线观看一区二区三区 | 日本女人在线观看 | 亚洲欧美视频在线观看 | 五月天婷婷免费视频 | 国产一卡久久电影永久 | 中文字幕国产精品一区二区 | 精品一区二区免费视频 | 娇妻呻吟一区二区三区 | 中中文字幕av在线 | 午夜色大片在线观看 | 午夜av日韩 | 草久在线| 国产在线观看免费 | 国产99久久99热这里精品5 | 黄色三级免费观看 | 黄色一级免费电影 | 色在线中文字幕 | 五月天婷婷在线播放 | 欧美精选一区二区三区 | 欧美有色 | 日韩高清一区二区 | 一区二区三区视频 | 深爱激情站 | 亚洲污视频 | 国产91成人在在线播放 | 激情婷婷丁香 | 国产黄色a| 中文字幕在线观看视频一区 | av高清网站在线观看 | 欧美日韩在线网站 | 三级黄色片在线观看 | 99热精品在线观看 | av中文字幕av | 在线播放视频一区 | 狠狠躁日日躁夜夜躁av | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 国产精品久久久久久久久费观看 | 日韩超碰 | 91福利社区在线观看 | 五月天激情婷婷 | 国产色妞影院wwwxxx | 麻豆视频网址 | 操操操日日日干干干 | av午夜电影| 国产一区二区电影在线观看 | 国产 在线 高清 精品 | 九九视频热 | 99视频在线免费 | 免费国产在线观看 | 国产探花 | 狠狠艹夜夜干 | 99超碰在线观看 | 亚洲精品午夜一区人人爽 | 国际精品久久久久 | 人人爽爽人人 | 99视频在线免费播放 | 国产人免费人成免费视频 | 国产aa免费视频 | 日韩精品一区二区三区在线播放 | 色www永久免费 | bbb搡bbb爽爽爽| 一区二区三区在线不卡 | 国产电影一区二区三区四区 | 五月在线视频 | 国产精品免费大片视频 | 国产精品视频区 | 欧美黑人xxxx猛性大交 | 中文在线字幕观看电影 | 国产精品高潮久久av | 日日爱网址 | av黄色国产 | 日韩欧美一区二区三区视频 | www九九热 | 色噜噜狠狠色综合中国 | www一起操| 黄色片视频在线观看 | 日日干夜夜干 | 国产伦理久久精品久久久久_ | 黄色一级在线观看 | 日韩免费高清在线观看 | 国产视频亚洲视频 | 色.com| 欧美性黄网官网 | 国产精品毛片一区二区 | 亚洲免费观看视频 | 色综合久久久久综合99 | 亚洲第一伊人 | 精品国产免费观看 | 黄色小网站在线观看 | 久久伊人91| 久久久久久久久久久久久9999 | 亚洲国内精品视频 | 日韩欧美精品一区 | 成人黄色影片在线 | 人人爽人人做 | 高清精品视频 | 久久精国产 | 操操日日| 在线小视频你懂得 | 欧美韩日在线 | 国产看片 色 | 亚洲另类在线视频 | 人人插人人看 | www国产一区 | 国产精品一区二区三区久久久 | 狠狠色丁香久久婷婷综 | 亚洲精品国产精品久久99热 | 九九九在线观看 | 青青河边草手机免费 | 伊人资源视频在线 | 午夜黄色影院 | 亚洲不卡在线 | 狠狠狠狠狠狠狠狠 | 欧美日韩另类在线 | 久久久久久久久久久久久影院 | 波多野结衣电影一区二区三区 | 超碰97在线看 | www.com久久久| 色婷婷久久一区二区 | 午夜视频免费在线观看 | 色婷婷激婷婷情综天天 | 免费人做人爱www的视 | 久久爱导航 | 五月亚洲综合 | 国产高清日韩欧美 | av在线一级| 九9热这里真品2 | 久操视频在线 | 婷婷黄色片 | 欧美综合国产 | 天天爱天天射天天干天天 | 国产精品日韩在线播放 | www99久久| 国产福利一区二区三区视频 | 国产精品一区二区av麻豆 | 日日躁天天躁 | 婷色在线 | 国产99久久久国产精品免费二区 | 在线观看视频99 | 精品久久中文 | 精品视频久久 | 国产高清精品在线 | 亚洲精品福利在线观看 | 亚洲一区二区三区毛片 | 久久久久久久久久久久久9999 | 在线观看第一页 | 天天在线免费视频 | 日韩色中色 | 91成人免费观看视频 | 九九视频免费观看视频精品 | 亚洲午夜精品久久久久久久久久久久 | 中文字幕在线播放日韩 | 国产一级片在线播放 | 欧美日韩精品在线一区二区 | 一区三区在线欧 | 精品福利视频在线观看 | 波多野结衣在线视频一区 | 国产精品久久久久久久久搜平片 | 亚洲少妇自拍 | 日韩电影在线看 | 久久精品爱视频 | 国语麻豆 | 日韩在线一二三区 | 看毛片网站 | 91精品1区 | 色婷婷av一区 | 欧美尹人 | 成年人av在线播放 | 成人播放器 | 在线 成人| 欧美久久久久久久久中文字幕 | 欧美aaa一级| 久久精品一区八戒影视 | 国产精品综合久久 | 国产高清视频在线播放一区 | 国产一级一片免费播放放 | 国产精品久久久久亚洲影视 | 91最新地址永久入口 | 黄色特级毛片 | 国产一线在线 | 国产成人一区二区三区电影 | 夜夜躁日日躁狠狠久久88av | 激情欧美在线观看 | 成人aaa毛片 | 国精产品满18岁在线 | 色插综合 | 成人av中文字幕 | 中文字幕在线观看1 | 久久高清精品 | 久久久人人爽 | 欧美激情在线看 | 久亚洲精品 | 久久精品第一页 | 毛片网免费 | 中文字幕av全部资源www中文字幕在线观看 | 狠狠躁夜夜av | 在线观看国产区 | 亚洲综合成人专区片 | 欧美日韩免费网站 | 91丨九色丨首页 | 亚洲国产精品视频在线观看 | 欧美日韩亚洲在线观看 | 国产美女网 | 黄色片网站免费 | 久久久久久久电影 | 五月天精品视频 | 色综合天天综合在线视频 | 成人福利在线 | 成人一区二区在线 | 免费日韩精品 | 亚洲一区视频免费观看 | 一级黄色av | 色九九影院 | 成人一区二区在线观看 | 一区二区电影在线观看 | 亚洲欧洲精品视频 | 亚洲精品成人免费 |