电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript 新手的踩坑日記

瀏覽:4日期:2023-11-13 11:14:47
引語

在1995年5月,Eich 大神在10天內(nèi)就寫出了第一個(gè)腳本語言的版本,JavaScript 的第一個(gè)代號是 Mocha,Marc Andreesen 起的這個(gè)名字。由于商標(biāo)問題以及很多產(chǎn)品已經(jīng)使用了 Live 的前綴,網(wǎng)景市場部將它改名為 LiveScript。在1995年11月底,Navigator 2.0B3 發(fā)行,其中包含了該語言的原型,這個(gè)版本相比之前沒有什么大的變化。在1995年12月初,Java 語言發(fā)展壯大,Sun 把 Java 的商標(biāo)授權(quán)給了網(wǎng)景。這個(gè)語言被再次改名,變成了最終的名字——JavaScript。在之后的1997年1月,標(biāo)準(zhǔn)化以后,就成為現(xiàn)在的 ECMAScript。

近一兩年在客戶端上用到 JS 的地方也越來越多了,筆者最近接觸了一下 JS ,作為前端小白,記錄一下近期自己“踩坑”的成長經(jīng)歷。

一. 原始值和對象

在 JavaScript 中,對值的區(qū)分就兩種:

1.原始值:BOOL,Number,String,null,undefined。

2.對象:每個(gè)對象都有唯一的標(biāo)識且只嚴(yán)格的等于(===)自己。

null,undefined沒有屬性,連toString( )方法也沒有。

false,0,NaN,undefined,null,’ ’ ,都是false。

typeof 運(yùn)算符能區(qū)分原始值和對象,并檢測出原始值的類型。

instanceof 運(yùn)算符可以檢測出一個(gè)對象是否是特定構(gòu)造函數(shù)的一個(gè)實(shí)例或者是否為它的一個(gè)子類。

JavaScript 新手的踩坑日記

null 返回的是一個(gè) object,這個(gè)是一個(gè)不可修復(fù)的 bug,如果修改這個(gè) bug,就會破壞現(xiàn)有代碼體系。但是這不能表示 null 是一個(gè)對象。

因?yàn)榈谝淮?JavaScript 引擎中的 JavaScript 值表示為32位的字符。最低3位作為一種標(biāo)識,表示值是對象,整數(shù),浮點(diǎn)數(shù)或者布爾值。對象的標(biāo)識是000,而為了表現(xiàn) null ,引擎使用了機(jī)器語言 NULL 的指針,該字符的所有位都是0。而 typeof 就是檢測值的標(biāo)志位,這就是為什么它會認(rèn)為 null 是一個(gè)對象了。

所以判斷 一個(gè) value 是不是一個(gè)對象應(yīng)該按照如下條件判斷:

function isObject (value) { return ( value !== null && (typeof value === ’object’ || typeof value === ’function’));}

null 是原型鏈最頂端的元素

Object.getPrototypeOf(Object.prototype)< null

判斷 undefined 和 null 可以用嚴(yán)格相等判斷:

if(x === null) { // 判斷是否為 null}if (x === undefined) { // 判斷是否為 undefined}if (x === void 0 ) { // 判斷是否為 undefined,void 0 === undefined}if (x != null ) { // 判斷x既不是undefined,也不是null // 這種寫法等價(jià)于 if (x !== undefined && x !== null )}

在原始值里面有一個(gè)特例,NaN 雖然是原始值,但是它和它本身是不相等的。

NaN === NaN

原始值的構(gòu)造函數(shù) Boolean,Number,String 可以把原始值轉(zhuǎn)換成對象,也可以把對象轉(zhuǎn)換成原始值。

// 原始值轉(zhuǎn)換成對象var object = new String(’abc’)// 對象轉(zhuǎn)換成原始值String(123)<’123’

但是在對象轉(zhuǎn)換成原始值的時(shí)候,需要注意一點(diǎn):如果用 valueOf() 函數(shù)進(jìn)行轉(zhuǎn)換的時(shí)候,轉(zhuǎn)換一切正確。

new Boolean(true).valueOf()

但是使用構(gòu)造函數(shù)將包裝對象轉(zhuǎn)換成原始值的時(shí)候,BOOL值是不能正確被轉(zhuǎn)換的。

Boolean(new Boolean(false))

構(gòu)造函數(shù)只能正確的提取出包裝對象中的數(shù)字和字符串。

二. 寬松相等帶來的bug

在 JavaScript 中有兩種方式來判斷兩個(gè)值是否相等。

嚴(yán)格相等 ( === ) 和嚴(yán)格不等 ( !== ) 要求比較的值必須是相同的類型。

寬松相等 ( == ) 和寬松不等 ( != ) 會先嘗試將兩個(gè)不同類型的值進(jìn)行轉(zhuǎn)換,然后再使用嚴(yán)格等進(jìn)行比較。

寬松相等就會遇到一些bug:

undefined == null // undefined 和 null 是寬松相等的

關(guān)于嚴(yán)格相等( Strict equality ) 和 寬松相等( Loose equality ),GitHub上有一個(gè)人總結(jié)了一張圖,挺好的,貼出來分享一下,Github地址在 這里

JavaScript 新手的踩坑日記

但是如果用 Boolean( ) 進(jìn)行轉(zhuǎn)換的時(shí)候情況又有不同:

JavaScript 新手的踩坑日記

這里為何對象總是為true ?

在 ECMAScript 1中,曾經(jīng)規(guī)定不支持通過對象配置來轉(zhuǎn)換(比如 toBoolean() 方法)。原理是布爾運(yùn)算符 || 和 && 會保持運(yùn)算數(shù)的值。因此,如果鏈?zhǔn)绞褂眠@些運(yùn)算符,會多次確認(rèn)相同值的真假。這樣的檢查對于原始值類型成本不大,但是對于對象,如果能通過配置來轉(zhuǎn)換布爾值,成本很大。所以從 ECMAScript 1 開始,對象總是為 true 來避免了這些成本轉(zhuǎn)換。

三. Number

JavaScript 中所有的數(shù)字都只有一種類型,都被當(dāng)做浮點(diǎn)數(shù),JavaScript 內(nèi)部會做優(yōu)化,來區(qū)分浮點(diǎn)數(shù)組和整數(shù)。JavaScript 的數(shù)字是雙精度的(64位),基于 IEEE 754 標(biāo)準(zhǔn)。

由于所有數(shù)字都是浮點(diǎn)數(shù),所以這里就會有精度的問題。還記得前段時(shí)間網(wǎng)上流傳的機(jī)器人的漫畫么?

JavaScript 新手的踩坑日記

精度的問題就會引發(fā)一些奇妙的事情

0.1 + 0.2 ; // 0.300000000000004( 0.1 + 0.2 ) + 0.3; // 0.60000000000010.1 + ( 0.2 + 0.3 ); // 0.6(0.8+0.7+0.6+0.5) / 4 // 0.65(0.6+0.7+0.8+0.5) / 4 // 0.6499999999999999

變換一個(gè)位置,加一個(gè)括號,都會影響精度。為了避免這個(gè)問題,建議還是轉(zhuǎn)換成整數(shù)。

( 8 + 7 + 6 + 5) / 4 / 10 ; // 0.65( 6 + 8 + 5 + 7) / 4 / 10 ; // 0.65

JavaScript 新手的踩坑日記

在數(shù)字里面有4個(gè)特殊的數(shù)值:

2個(gè)錯(cuò)誤值:NaN 和 Infinity

2個(gè)0,一個(gè)+0,一個(gè)-0。0是會帶正號和負(fù)號。因?yàn)檎?fù)號和數(shù)值是分開存儲的。

typeof NaN<'number'

(吐槽:NaN 是 “ not a number ”的縮寫,但是它卻是一個(gè)數(shù)字)

NaN 是 JS 中唯一一個(gè)不能自身嚴(yán)格相等的值:

NaN === NaN

所以不能通過 Array.prototype.indexOf 方法去查找 NaN (因?yàn)閿?shù)組的 indexOf 方法會進(jìn)行嚴(yán)格等的判斷)。

[ NaN ].indexOf( NaN )<-1

正確的姿勢有兩種:

第一種:

function realIsNaN( value ){ return typeof value === ’number’ && isNaN(value);}

上面這種之所以需要判斷類型,是因?yàn)樽址D(zhuǎn)換會先轉(zhuǎn)換成數(shù)字,轉(zhuǎn)換失敗為 NaN。所以和 NaN 相等。

isNaN( ’halfrost’ )

第二種方法是利用 IEEE 754 標(biāo)準(zhǔn)里面的定義,NaN 和任意值比較,包括和自身進(jìn)行比較,都是無序的

function realIsNaN( value ){ return value !== value ;}

另外一個(gè)錯(cuò)誤值 Infinity 是由表示無窮大,或者除以0導(dǎo)致的。

判斷它直接用 寬松相等 == ,或者嚴(yán)格相等 === 判斷即可。

但是 isFinite() 函數(shù)不是專門用來判斷Infinity的,是用來判斷一個(gè)值是否是錯(cuò)誤值(這里表示既不是 NaN,又不是 Infinity,排除掉這兩個(gè)錯(cuò)誤值)。

在 ES6 中 引入了兩個(gè)函數(shù)專門判斷 Infinity 和 NaN的,Number.isFinite() 和 Number.isNaN() 以后都建議用這兩個(gè)函數(shù)進(jìn)行判斷。

JS 中整型是有一個(gè)安全區(qū)間,在( -2^53 , 2^53)之間。所以如果數(shù)字超過了64位無符號的整型數(shù)字,就只能用字符串進(jìn)行存儲了。

利用 parseInt() 進(jìn)行轉(zhuǎn)換成數(shù)字的時(shí)候,會有出錯(cuò)的時(shí)候,結(jié)果不可信:

parseInt(1000000000000000000000000000.99999999999999999,10)<1

parseInt( str , redix? ) 會先把第一個(gè)參數(shù)轉(zhuǎn)換成字符串:

String(1000000000000000000000000000.99999999999999999)<'1e+27'

parseInt 不認(rèn)為 e 是整數(shù),所以在 e 之后的就停止解析了,所以最終輸出1。

JS 中的 % 求余操作符并不是我們平時(shí)認(rèn)為的取模。

-9%7<-2

求余操作符會返回一個(gè)和第一個(gè)操作數(shù)相同符號的結(jié)果。取模運(yùn)算是和第二個(gè)操作數(shù)符號相同。

所以比較坑的就是我們平時(shí)判斷一個(gè)數(shù)是否是奇偶數(shù)的問題就會出現(xiàn)錯(cuò)誤:

function isOdd( value ){ return value % 2 === 1;}console.log(-3); // falseconsole.log(-2); // false

正確姿勢是:

function isOdd( value ){ return Math.abs( value % 2 ) === 1;}console.log(-3); // trueconsole.log(-2); // false四. String

字符串比較符,是無法比較變音符和重音符的。

’?’ < ’b’ < ’b’五. Array

創(chuàng)建數(shù)組的時(shí)候不能用單個(gè)數(shù)字創(chuàng)建數(shù)組。

new Array(2) // 這里的一個(gè)數(shù)字代表的是數(shù)組的長度<[ , , ]new Array(2,3,4)<[2,3,4]

刪除元素會刪出空格,但是不會改變數(shù)組的長度。

var array = [1,2,3,4]array.length<4delete array[1]array<[1, ,3,4]array.length<4

所以這里的刪除不是很符合我們之前的刪除,正確姿勢是用splice

var array = [1,2,3,4,56,7,8,9]array.splice(1,3)array<[1, 56, 7, 8, 9]array.length<5

針對數(shù)組里面的空缺,不同的遍歷方法行為不同

在 ES5 中:

JavaScript 新手的踩坑日記

在 ES6 中:規(guī)定,遍歷時(shí)不跳過空缺,空缺都轉(zhuǎn)化為undefined

JavaScript 新手的踩坑日記

六. Set 、Map、WeakSet、WeakMap

JavaScript 新手的踩坑日記

七. 循環(huán)

先說一個(gè) for-in 的坑:

var scores = [ 11,22,33,44,55,66,77 ];var total = 0;for (var score in scores) { total += score;}var mean = total / scores.length;mean;

一般人看到這道題肯定就開始算了,累加,然后除以7 。那么這題就錯(cuò)了,如果把數(shù)組里面的元素變的更加復(fù)雜:

var scores = [ 1242351,252352,32143,452354,51455,66125,74217 ];

其實(shí)這里答案和數(shù)組里面元素是多少無關(guān)。只要數(shù)組元素個(gè)數(shù)是7,最終答案都是17636.571428571428。

原因是 for-in 循環(huán)的是數(shù)組下標(biāo),所以 total = ‘00123456’ ,然后這個(gè)字符串再除以7。

JavaScript 新手的踩坑日記

遍歷對象的屬性,ES6 中有6種方法:

JavaScript 新手的踩坑日記

八. 隱式轉(zhuǎn)換 / 強(qiáng)制轉(zhuǎn)換 帶來的bug

var formData = { width : ’100’};var w = formData.width;var outer = w + 20;console.log( outer === 120 ); // false;console.log( outer === ’10020’); // true九. 運(yùn)算符重載

在 JavaScript 無法重載或者自定義運(yùn)算符,包括等號。

十. 函數(shù)聲明和變量聲明的提升

先舉一個(gè)函數(shù)提升的例子。

function foo() { bar(); function bar() { …… }}

var 變量也具有提升的特性。但是把函數(shù)賦值給變量以后,提升的效果就會消失。

function foo() { bar(); // error! var bar = function () { …… }}

上述函數(shù)就沒有提升效果了。

函數(shù)聲明是做了完全提升,變量聲明只是做了部分提升。變量的聲明才有提升的作用,賦值的過程并不會提升。

JavaScript 支持詞法作用域( lexical scoping ),即除了極少的例外,對變量 foo 的引用會被綁定到聲明 foo 變量最近的作用域中。ES5中 不支持塊級作用域,即變量定義的作用域并不是離其最近的封閉語句或代碼塊,而包含它們的函數(shù)。所有的變量聲明都會被提升,聲明會被移動到函數(shù)的開始處,而賦值則仍然會在原來的位置進(jìn)行。

function foo() { var x = -10; if ( x < 0) { var tmp = -x; …… } console.log(tmp); // 10}

這里 tmp 就有變量提升的效果。

再舉個(gè)例子:

foo = 2;var foo; console.log( foo );

上面這個(gè)例子還是輸出2,不是輸出undefined。

這個(gè)經(jīng)過編譯器編譯以后,其實(shí)會變成下面這個(gè)樣子:

var foo; foo = 2;console.log( foo );

變量聲明被提前了,賦值還在原地。 為了加深一下這句話的理解,再舉一個(gè)例子:

console.log( a ); var a = 2;

上述代碼會被編譯成下面的樣子:

var foo;console.log( foo ); foo = 2;

所以輸出的是undefined。

如果變量和函數(shù)都存在提升的情況, 那么函數(shù)提升優(yōu)先級更高 。

foo(); // 1var foo;function foo() { console.log( 1 );}foo = function() { console.log( 2 );};

上面經(jīng)過編譯過會變成下面這樣子:

function foo() { console.log( 1 );}foo(); // 1foo = function() { console.log( 2 );};

最終結(jié)果輸出是1,不是2 。這就說明了函數(shù)提升是優(yōu)先于變量提升的。

為了避免變量提升,ES6中引入了 let 和 const 關(guān)鍵字,使用這兩個(gè)關(guān)鍵字就不會有變量提升了。原理是,在代碼塊內(nèi),使用 let 命令聲明變量之前,該變量都是不可用的,這塊區(qū)域叫“暫時(shí)性死區(qū)”(temporal dead zone,TDZ)。TDZ 的做法是,只要一進(jìn)入到這一區(qū)域,所要使用的變量就已經(jīng)存在了,變量還是“提升”了,但是不能獲取,只有等到聲明變量的那一行出現(xiàn),才可以獲取和使用該變量。

ES6 的這種做法也給 JS 帶來了塊級作用域,(在 ES5 中只有全局作用于和函數(shù)作用域),于是立即執(zhí)行匿名函數(shù)(IIFE)就不在必要了。

十一. arguments 不是數(shù)組

arguments 不是數(shù)組,它只是類似于數(shù)組。它有l(wèi)ength屬性,可以通過方括號去訪問它的元素。不能移除它的元素,也不能對它調(diào)用數(shù)組的方法。

不要在函數(shù)體內(nèi)使用 arguments 變量,使用 rest 運(yùn)算符( ... )代替。因?yàn)?rest 運(yùn)算符顯式表明了你想要獲取的參數(shù),而且 arguments 僅僅只是一個(gè)類似的數(shù)組,而 rest 運(yùn)算符提供的是一個(gè)真正的數(shù)組。

下面有一個(gè)把 arguments 當(dāng)數(shù)組用的例子:

function callMethod(obj,method) { var shift = [].shift; shift.call(arguments); shift.call(arguments); return obj[method].apply(obj,arguments);}var obj = { add:function(x,y) { return x + y ;}};callMethod(obj,'add',18,38);

上述代碼直接報(bào)錯(cuò):

Uncaught TypeError: Cannot read property ’apply’ of undefined at callMethod (:5:21) at:12:1

出錯(cuò)的原因就在于 arguments 并不是函數(shù)參數(shù)的副本,所有命名參數(shù)都是 arguments 對象中對應(yīng)索引的別名。因此通過 shift 方法移除 arguments 對象中的元素之后,obj 仍然是 arguments[0] 的別名,method 仍然是 arguments[1] 的別名??瓷先ナ窃谡{(diào)用 obj[add],實(shí)際上是在調(diào)用17[25]。

還有一個(gè)問題,使用 arguments 引用的時(shí)候。

function values() { var i = 0 , n = arguments.length; return { hasNext: function() {return i < n; }, next: function() {if (i >= n) { throw new Error('end of iteration');}return arguments[i++]; } }}var it = values(1,24,53,253,26,326,);it.next(); // undefinedit.next(); // undefinedit.next(); // undefined

上述代碼是想構(gòu)造一個(gè)迭代器來遍歷 arguments 對象的元素。這里之所以會輸出 undefined,是因?yàn)橛幸粋€(gè)新的 arguments 變量被隱式的綁定到了每個(gè)函數(shù)體內(nèi),每個(gè)迭代器 next 方法含有自己的 arguments 變量,所以執(zhí)行 it.next 的參數(shù)時(shí),已經(jīng)不是 values 函數(shù)中的參數(shù)了。

更改方式也簡單,只要聲明一個(gè)局部變量,next 的時(shí)候能引用到這個(gè)變量即可。

function values() { var i = 0 , n = arguments.length,a = arguments; return { hasNext: function() {return i < n; }, next: function() {if (i >= n) { throw new Error('end of iteration');}return a[i++]; } }}var it = values(1,24,53,253,26,326,);it.next(); // 1it.next(); // 24it.next(); // 53十二. IIFE 引入新的作用域

在 ES5 中 IIFE 是為了解決 JS 缺少塊級作用域,但是到了 ES6 中,這個(gè)就可以不需要了。

十三. 函數(shù)中 this 的問題

在嵌套函數(shù)中不能訪問方法中的 this 變量。

var halfrost = { name:’halfrost’, friends: [ ’haha’ , ’hehe’ ], sayHiToFriends: function() { ’use strict’; this.friends.forEach(function (friend) { // ’this’ is undefined here console.log(this.name + ’say hi to’ + friend); }); }}halfrost.sayHiToFriends()

這時(shí)就會出現(xiàn)一個(gè)TypeError: Cannot read property ’name’ of undefined。

解決這個(gè)問題有兩種方法:

第一種:將 this 保存在變量中。

sayHiToFriends: function() { ’use strict’; var that = this; this.friends.forEach(function (friend) { console.log(that.name + ’say hi to’ + friend); });}

第二種:利用bind()函數(shù)

使用bind()給回調(diào)函數(shù)的this綁定固定值,即函數(shù)的this

sayHiToFriends: function() { ’use strict’; this.friends.forEach(function (friend) { console.log(this.name + ’say hi to’ + friend); }.bind(this));}

第三種:利用 forEach 的第二個(gè)參數(shù),把 this 指定一個(gè)值。

sayHiToFriends: function() { ’use strict’; this.friends.forEach(function (friend) { console.log(this.name + ’say hi to’ + friend); }, this);}

到了 ES6 里面,建議能用箭頭函數(shù)的地方用箭頭函數(shù)。

簡單的,單行的,不會復(fù)用的函數(shù),都建議用箭頭函數(shù),如果函數(shù)體很復(fù)雜,行數(shù)很多,還應(yīng)該用傳統(tǒng)寫法。

箭頭函數(shù)里面的 this 對象就是定義時(shí)候的對象,而不是使用時(shí)候的對象,這里存在“綁定關(guān)系”。

這里的“綁定”機(jī)制并不是箭頭函數(shù)帶來的,而是因?yàn)榧^函數(shù)根本就沒有自己的 this,導(dǎo)致內(nèi)部的 this 就是外層代碼塊的 this,正因?yàn)檫@個(gè)特性,也導(dǎo)致了以下的情況都不能使用箭頭函數(shù):

不能當(dāng)做構(gòu)造函數(shù),不能使用 new 命令,因?yàn)闆]有 this,否則會拋出一個(gè)錯(cuò)誤。

不可以使用 argument 對象,該對象在函數(shù)體內(nèi)不存在,非要使用就只能用 rest 參數(shù)代替。也不能使用 super,new.target 。

不可以使用 yield 命令,不能作為 Generator 函數(shù)。

不可以使用call(),apply(),bind()這些方法改變 this 的指向。

十四. 異步

異步編程有以下幾種:

回調(diào)函數(shù)callback

事件監(jiān)聽

發(fā)布 / 訂閱

Promise對象

Async / Await

(這個(gè)日記可能一直未完待續(xù)......)

來自:http://www.cocoachina.com/ios/20170619/19573.html

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲欧洲色 | 国产制服丝袜一区 | 少妇偷乱偷乱视频在线 | 久久日精品 | 狠狠色噜噜狠狠狠 | 国产真实精品久久二三区 | 毛片一区二区三区 | 在线国产欧美 | 国产欧美一区二区在线观看 | 国产黄大片在线观看 | 人碰人操 | 人妻人人澡人人添人人爽 | 久久久精品视频在线观看 | 这里有精品 | 日本视频免费在线 | 国产精品久久久久久久久久久天堂 | 国产 欧美 日韩 在线 | 国产成人免费视频 | 中文字幕无码一区二区免费 | 日本久久网站 | 午夜精品久久久久久久 | 国产免费人做人爱午夜视频 | 亚洲拍拍视频 | 精品成人免费一区二区在线播放 | 在线成人亚洲 | 精品国产髙清在线看国产毛片 | 三区中文字幕 | 国产成人av网站 | 看三级毛片 | 嫩草精品福利视频在线观看 | 精品 日韩 国产 欧美 视频 | 国产成人 综合 亚洲欧美 | 性高潮久久久久久久 | 无码粉嫩虎白一线天在线观看 | 国内最真实的xxxx人伦 | 亚洲不卡av不卡一区二区 | 成人片黄网站色大片免费观看 | 色哟哟在线免费观看 | 激情在线观看视频 | 国产女人高潮毛片 | 91亚洲精品在线 | 关之琳三级全黄做爰在线观看 | 色婷婷综合成人av | 在线不卡日本v二区到六区 免费又黄又爽又猛的毛片 特级西西人体444www高清大胆 | 成人av网址在线观看 | 超碰黑人 | 成人在线免费观看视频 | 九色丨porny丨自拍视频 | 午夜成人爽爽爽视频在线观看 | 人妻内射一区二区在线视频 | 人人妻人人澡人人爽精品日本 | 中文字幕无线码免费人妻 | 99精品视频免费在线观看 | 九色视频网站 | 白色丝袜美女羞羞av | 狠狠色老熟妇老熟女 | 欧美自拍嘿咻内射在线观看 | 永久免费汤不热视频 | 国产高清在线精品一区二区三区 | 日韩中文字幕av在线 | 亚洲欧美日韩精品久久 | 亚洲精品久久久久中文字幕二区 | 国自产拍偷拍精品啪啪模特 | 婷婷综合久久中文字幕蜜桃三电影 | 天干天干天干夜夜爽av | 国产欧美亚洲精品第一区软件 | 夜夜躁狠狠躁日日 | 中文字幕乱码熟女人妻水蜜桃 | 日韩在线一二 | 可以在线观看的黄色 | 亚洲性久久9久久爽 | 国产浮力影院 | 国产一区二区三区久久 | 亚洲最大成人网4388xx | 国产裸体丰满白嫩大尺度尤物可乐 | 少妇中文字幕 | 国产精品福利一区二区 | www亚洲色图com | 巨粗进入警花哭喊求饶在线观看 | 欧美天堂一区二区 | av狠狠干| 诱惑の诱惑筱田优在线播放 | 少妇一级淫片免费 | 妲己艳史淫片免费看 | 亚洲无线码在线一区观看 | 黄色大毛片| 中文字幕无码精品亚洲资源网久久 | 久热99| 中国女人内谢69xxxx喜欢你 | 自拍偷自拍亚洲精品播放 | 亚洲成a人v欧美综合天堂下载 | 成年人在线观看视频免费 | 97色碰碰公开视频 | 黑人巨茎大战白人美女 | 日韩中文字幕免费在线观看 | 自拍偷拍21p | 亚洲色p| 九一国产在线观看 | 好吊操av| 无人在线观看的免费高清视频 | 少妇呻吟白浆高潮啪啪69 | 丰满少妇作爱视频免费观看 | 婷婷日韩| 97精品人妻一区二区三区香蕉 | 无码人妻精品一区二区三区东京热 | videosex抽搐痉挛高潮 | 亚洲精品成人a在线观看 | 操女人视频网站 | 羞羞国产一区二区三区四区 | 97久久人澡人人添人人爽 | 国产第一页屁屁影院 | 国产精品国产三级国产密月 | 乌克兰极品少妇ⅴαdeo | 亚洲色偷拍另类无码专区 | 黄色不卡视频 | 在线观看欧美一区 | 激情综合色综合久久综合 | 成人av网址在线观看 | 九九re6热在线视频精品66 | 99久久精品久久久久久动态片 | 奇米影视第四色7777 | 性欧美巨大乳 | 麻豆av在线看 | 成人做爰100部片免费下载 | 97se亚洲精品一区 | 欧美人妻日韩精品 | 欧美精品一区二区三区免费视频 | 92在线观看免费视频日本 | 欧洲妇女成人淫片aaa视频 | 国产在线播放一区二区 | 福利视频一二三区 | 91黄色在线视频 | 狠狠五月婷婷 | 翔田千里高潮在线播放 | 小视频在线观看 | 国产精品99久久久久久动医院 | 国产乱色 | 日日干网站 | 99久久精品国产一区二区成人 | 日本一卡精品视频免费 | 亚洲免费成人av | 欧美另类xxxx野战 | 久久人妻内射无码一区三区 | 国产边打电话边被躁视频 | 成年人黄色大片大全 | 秋霞成人午夜鲁丝一区二区三区 | 国产欧美一区二区三区另类精品 | 国产 欧美 视频一区二区三区 | 欧美日韩一区二区三区四区在线观看 | 久久久久se色偷偷亚洲精品av | 少妇艹逼 | 麻豆91精品91久久久的优点 | 日本高潮视频 | 日韩手机看片 | 午夜精品一区二区三区免费视频 | 国产精品色图 | 老司机成人免费视频 | 欧美成人免费全部网站 | a 'v片欧美日韩在线 | 日本公妇乱淫免费视频一区三区 | 中文字幕丰满乱子无码视频 | 两性午夜免费视频 | 韩国jizz| 99这里只有精品视频 | 日韩不卡在线视频 | 国产精品欧美一区二区三区不卡 | 亚洲免费国产 | 无码午夜人妻一区二区不卡视频 | 欧美日韩国产精品久久 | 视频丨9l丨白浆 | 日本美女色片 | 国产精品久免费的黄网站 | 国产丰满麻豆videossex | 天天躁日日摸久久久精品 | 东北老头老太国产 | 国产欧美不卡 | 国产精品新婚之夜泄露女同 | 色欲综合一区二区三区 | 国产精品久久久久久麻豆一区 | 99热热热| 日韩成人无码一区二区三区 | 日韩欧美一区二区三区四区五区 | 天堂无码人妻精品一区二区三区 | jizz欧美大片 | 一本色道a无线码一区v | 亚洲男人天堂网址 | 久久一本人碰碰人碰 | 青青草.com| 公车乳尖揉捏酥软呻吟 | 破了亲妺妺的处免费视频国产 | tushy欧美激情在线观看 | 欧美综合在线视频 | 无遮挡边摸边吃奶边做视频 | 巴西少妇xxb大毛又多 | 77777五月色婷婷丁香视频 | 韩国无码无遮挡在线观看 | 日韩一区二区三区无码影院 | 麻豆乱淫一区二区三区 | 激情影院内射美女 | 亚洲精品一区二区三区中文字幕 | 亚洲精品美女久久17c | 久久天天躁狠狠躁夜夜网站 | 国产波霸爆乳一区二区 | 91精品国产一区二区 | 丁香桃色午夜亚洲一区二区三区 | 欧美性猛交ⅹxx乱大交 | 亚洲国产精品久 | 亚洲性xxxx | 香港三级日本三级a视频 | 在线观看人成视频免费 | 国产综合亚洲精品一区二 | 国产乱人激情h在线观看 | 午夜裸体性播放 | 国产精品去看片 | 国产精品久久久久影院色老大 | 久久综合伊人中文字幕 | 久久免费看少妇高潮v片特黄 | 欧洲无线码一二三四区 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 黄网站在线播放 | 色一情一乱一伦 | 人妻教师痴汉电车波多野结衣 | www.51色.com| 中文在线а√天堂官网 | 私人成片免费观看 | 激情综合色综合久久综合 | 伊人久久大香线蕉午夜 | 日本人麻豆 | 国产三级理论片 | tushy欧美激情在线看 | 国产免费中文字幕 | 夜夜精品浪潮av一区二区三区 | 色欲av永久无码精品无码蜜桃 | 中文字幕网站在线观看 | 天天干天天爱天天操 | 国产精品天天在线午夜更新 | 国产毛片又黄又爽 | 久久久久久亚洲国产精品 | 91久久国产露脸精品国产闺蜜 | 日本中文字幕视频在线 | 伊人精品无码av一区二区三区 | 男女无遮挡xx00动态图120秒 | 欧美日韩国产一区二区三区不卡 | 成人性生交大片免费看中文视频 | 中国69av | 欧美超碰在线 | jvid视频在线观看 | 我和岳m愉情xxxx国产91 | 国产精品女人久久久 | 久久婷婷婷 | 精品国产欧美一区二区三区成人 | 波多野结衣午夜 | 91九色丨porny丨丰满6 | 国产精品亚州 | 欧美激情视频一区二区三区不卡 | 国产123在线 | 日韩欧美精品一区二区 | 欧美人与动性xxxxx杂性 | 真实的国产乱xxxx在线91 | 免费无码又爽又黄又刺激网站 | 欧美激情在线免费 | 国产98色在线 | 日韩 | 欧美日韩色另类综合 | 黄片毛片免费在线观看 | 国产又粗又硬视频 | 亚洲网视频 | 又黄又爽又刺激久久久久亚洲精品 | 巨胸不知火舞露双奶头无遮挡 | 在线观看特色大片免费视频 | 亚洲一区二区三区视频 | 偷窥少妇高潮呻吟av久久免费 | 在线不卡国产 | 亚洲精品一区国语对白 | 久久久精品国产99久久精品芒果 | 国产精品无码dvd在线观看 | 热の国产| 国产欧美一区二区精品97 | 久久久久久国产精品亚洲78 | 精品国产欧美 | 老色鬼a∨在线视频在线观看 | 视频h在线 | 女邻居的大乳中文字幕 | 欧美日韩高清在线 | 黄色www视频 | 小12萝8禁在线喷水观看 | 亚洲情综合五月天 | 夜夜躁狠狠躁日日躁 | 午夜久久一区 | 91精品国产综合久久香蕉的特点 | 噜噜噜在线观看免费视频日本 | 久久av影院 | 日本无遮挡吸乳呻吟免费视频网站 | 精品乱 | 成人午夜视频免费在线观看 | 不卡三区 | 亚洲无线一二三四区手机 | 国产深夜福利视频在线 | 不卡三区 | 99久热re在线精品99re8热视频 | 成人7777| 成人乱淫av日日摸夜夜爽 | 天天想夜夜操 | 免费看的av网站 | 日产久久久久久 | 精品久久久爽爽久久男人和男人 | 亚洲精品www. | 91丨国产丨捆绑调教 | 国产黄色精品视频 | 国产毛片不卡 | 久久爱综合| 亚洲免费在线播放 | 精品无码久久久久久久久水蜜桃 | 成人性生交大片免费8 | 亚洲午夜18毛片在线看 | 亚洲国产精品一区二区久久hs | 欧美在线xxxx| 中文字幕一区二区三区四区五区 | 亚洲综合不卡 | 一级特级片 | 欧美人与zoxxxx视频 | 国产成人无码性教育视频 | 精品国产乱码久久久久久蜜柚 | 久久久午夜爽爽一区二区三区三州 | av男人在线 | 国产成人av无码精品 | 国产久热精品无码激情 | 久草在线视频福利资源站 | 中文国产成人精品久久不卡 | www.白浆| 国内精品人妻无码久久久影院 | 久久久久久亚洲精品成人 | 亚洲xxx视频 | 欧美成网| 一区欧美| 成人深夜视频 | 亚洲欧美精品 | 午夜久久久久久久久久久 | 国产偷伦视频 | 用力来高潮了再用力91 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产又黄又大视频 | 国产精品网站在线观看免费传媒 | 夜夜摸狠狠添日日添高潮出水 | 九九黄色 | yy77777丰满少妇影院 | 91免费精品| 亚洲1024| 无码中文字幕人妻在线一区二区三区 | 日本理论片在线 | 一级做a毛片| 丁香五月欧美成人 | 国产成人精品a视频一区www | 91精品无人成人www | 日韩欧美卡一卡二卡新区 | 夜夜操综合 | 日韩欧美视频在线 | 中文字幕乱偷无码av先锋 | 国产人妖av | 岳的好大精品一区二区三区 | 45分钟免费真人视频 | lutube成人福利在线观看污 | 亚洲另类xxxx | 99精品在线免费观看 | mm131美女大尺度私密照尤果 | 强videoshd酒醉 | 91成人免费在线视频 | 一本一道av中文字幕无码 | 亚洲国产一区二区三区四区四季 | 国产在线短视频 | 亚洲人成电影网站在线播放 | 久草视频网 | 成人免费视频国产 | 青青草视频在线看 | av无码久久久久不卡蜜桃 | 亚洲成人黄色片 | 蜜桃国精产品二三三区视频 | 国产国拍亚洲精品av在线 | 国产高清免费看 | dy888夜精品国产专区 | 男人的天堂亚洲 | 精品国产一区二区三区护卡密 | 乱码丰满人妻一二三区 | 欧美黄色大片免费观看 | 久久三级视频 | 日韩欧美的一区二区 | 亚洲成人1区 | 囯产精品一品二区三区 | 日韩在线第三页 | 91丨九色丨黑人外教 | 饭岛爱av片在线播放 | 国产成人99久久亚洲综合精品 | 一区二区三区日韩视频在线观看 | 日本做爰高潮片免费视频 | 国产精品嫩草影院久久久 | 黄视频免费在线观看 | 中文在线√天堂 | 精品人妻一区二区三区四区在线 | 一级做a爱片久久毛片a高清 | 天堂亚洲网 | 成人免费毛片足控 | 精品国产九九 | 中文字幕精品一二三四五六七八 | 国产交换配乱淫视频a免费 国产精成人品免费观看 | 少妇毛片一区二区三区免费视频 | 特级毛片网站 | 日韩在线观看av | 国产xxxx18 | 国模妙妙超大尺度啪啪人体 | 国产精品亚洲色图 | 少妇理论片 | 性色av一区二区三区夜夜嗨 | 六月婷婷网 | 亚洲www啪成人一区二区麻豆 | 久草视频国产 | 看中国毛片 | 亚洲午夜1000理论片aa | 国外处破女一区二区 | 91亚洲精华国产精华精华液 | 国产视频精品一区二区三区 | 久久久久免费看成人影片 | 欧美乱大交xxxxx春色视频 | 欧美体内谢she精2性欧美 | 国产乱码精品一区二三区蜜臂 | 国内黄色一级片 | 欧美一级网 | 欧美爱爱爱 | 国产精品久久无码一区 | 任你躁久久久久久妇女av | 中文字幕不卡二区 | 亚洲人成网站18禁止人 | 久久国产精品亚洲 | 亚洲精品午睡沙发系列 | 真实国产乱子伦对白视频 | 欧美乱妇狂野欧美在线视频 | 蜜桃臀久久久蜜桃臀久久久蜜桃臀 | 欧美日韩三 | 神马午夜伦 | 国产色婷婷亚洲99精品小说 | 女人被狂躁的高潮免费视频 | 放荡的美妇在线播放 | 日本最新偷拍小便视频 | 日本中文有码 | 性做久久久久久久 | 朝桐光av在线| 国产精品无码制服丝袜 | 一本一道久久a久久精品 | 亚洲自国产拍揄拍 | 日韩在线欧美在线 | 激情五月网站 | 久久这里只有精品18 | 国产成人一区二区三区视频 | 亚洲精品影视 | 国产精品久久久久久久影院 | 两个人看的www免费视频中文 | 92久久精品一区二区 | 希岛爱理av免费一区二区 | 欧美入口 | 国产精品一卡二卡三卡 | 国内成人自拍 | 大sao货你好浪好爽好舒服视频 | 天堂欧美城网站地址 | 欧美精品动漫 | 精品国产福利在线 | 尤物97国产精品久久精品国产 | 日韩经典第一页 | 一本一本久久a久久精品综合不卡 | 波多野结衣网站 | 亚洲区一| 亚洲精品88欧美一区二区 | 天天摸夜夜 | 精品乱 | 九热在线 | 夜色资源ye321 在线观看 | 国产精品久久久久久久久久久免费看 | 在线视频天堂 | 国产视频在线观看一区 | 午夜精品久久久久久久99婷婷 | 黄色网炮| 午夜精品一区二区三区在线视频 | 小明www永久免费播放平台 | 亚洲国产精品久久久久久久久久 | 亚洲区久久 | 中文天堂网 | 精品午夜久久 | 国产精品久久无码一区二区三区网 | 中文字幕+乱码+中文字幕明步 | 国产又粗又硬又大爽黄老大爷 | 后宫一级淫片免费放 | 成人性生交大片免费看4 | 久久精品国产免费 | 插入综合网| 久色国产sm重口调教在线观看 | 日韩在线第二页 | av网站黄色 | 日韩精品久久久 | 国产高跟黑色丝袜在线 | 国产精品suv一区二区三区 | 国产欧美一区二区精品97 | 手机成人在线视频 | www.天天射| 国产三级短视频 | 亚洲激情中文字幕 | 欧美激情18 | 91福利视频网站 | 乱精品一区字幕二区 | 久久网站av | 肉色欧美久久久久久久免费看 | 免费福利av| 一级黄色的毛片 | 亚洲人成网站999久久久综合 | 成人h动漫精品一区二区原神 | 九色丨porny丨肥臀 | 中文字幕视频在线观看 | 黄网站在线免费 | 精品国产乱码久久久久软件 | 中文一二三区 | 亚洲精品国产精品乱码不99按摩 | 中文字幕日韩一区二区三区不卡 | 91在线看黄| 欧美a级黄 | 亚洲精品国产主播一区 | 欧美在线观看成人 | 国模冰莲大胆自慰难受 | 色呦色呦色精品 | 国产真实乱偷精品视频免 | 国产亚洲视频在线 | 日本高清成本人视频一区 | 日本囗交一级视频 | 免费看操片 | 国产精品视频在线看 | 香蕉视频最新网址 | 我撕开了少妇的蕾丝内裤视频 | 亚洲综合一区二区 | 日本一区二区免费在线观看 | 女人av在线 | 国产精品suv一区二区三区 | 青青草亚洲 | 国产一二三区精品 | 韩国性生交大片免费观看视频 | 黄 色 成 人小短文 黄色a v视频 | 欧美日韩精品国产 | 亚洲精品成人无码中文毛片 | 图片区乱熟图片区小说 | 日韩欧美精选 | 黄视频国产| 免费草逼网站 | 性欧美xxx69hd高清 | 亚洲精品一区二区三区98年 | 欧美人做人爱a全程免费 | 亚洲色成人一区二区三区小说 | 一区二区三区在线观看免费 | 欧美一区二区三区免费 | 极品尤物一区二区三区 | 青草青在线视频在线观看 | 成年人毛片视频 | 亚洲第一页在线 | 麻豆91在线 | 精品在线视频播放 | 美女又爽又黄又免费 | 蜜桃久久久久久久 | 999在线观看精品免费不卡网站 | 黄色片免费| 久久久久高潮毛片免费全部播放 | 国产在线视频导航 | 在线网站免费观看入口 | 国产精品自在线拍国产手青青机版 | 亚洲精品92内射 | 久久久久久黄色片 | 东京热一区二区三区无码视频 | 亚洲欧美成人一区 | 国产无线一二三四区手机 | 久久五月综合 | 粉嫩av一区二区三区在线观看 | 在线丨暗呦小u女国产精品 在线爽 | 国产精品久久久网站 | 法国白嫩大屁股xxxx | 一性一交一伦一色一按—摩 | 视频一区二区中文字幕 | 噼里啪啦在线看免费观看视频 | www.色图| 激情综合一区二区三区 | 亚洲一本之道高清乱码 | 久久婷婷一区二区 | 精精国产xxxx视频在线 | 无码人妻精品一区二区三区蜜桃 | 色www情| 自拍一级片 | 人妻少妇精品一区二区三区 | 亚洲成av人片天堂网老年人 | 少妇人妻偷人精品无码视频新浪 | 欧美jizzhd精品欧美性24 | 一二三四在线视频观看社区 | 久久久久久九九精品久 | 免费观看毛片 | 老熟女 露脸 嗷嗷叫 | 涩涩屋www视频在线观看高清 | 色综合色综合网色综合 | 日本又黄又硬又爽的大片 | 久久人人爽人人爽人人片 | 99视频偷窥在线精品国自产拍 | 91精品国产福利在线观看的优点 | 亚洲中文字幕无码永久在线 | 国内精品人妻无码久久久影院导航 | 国产精品美女久久久久久久 | 日本少妇激三级做爰在线 | 手机看片国产一区 | 免费看片成人 | 丰满人妻被黑人猛烈进入 | 免费观看的av | 日本强好片久久久久久aaa | 久久在线免费观看视频 | 91视频久久久 | 亚洲天堂中文在线 | 91精品久久久久含羞草 | 俺去俺来也在线www色官 |