精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript變量作用域之殤

開發(fā) 前端
如果你愛上了JavaScript這門詭異的語言,那我相信你一定在與其戀愛期間飽受了其變量作用域所引發(fā)的一系列問題的不少摧殘。對于任何一門編程語言,變量作用域都是一個關切的話題。正如David Herman在《Effective JavaScript》中的形象比喻,“Scope is like oxygen to a programmer”。當你“呼吸順暢”的時候,你并不會意識到變量作用域的重要性;然而當你“呼吸受阻”的時候,你便會體會到它的輕重高低。

如果你愛上了JavaScript這門詭異的語言,那我相信你一定在與其戀愛期間飽受了其變量作用域所引發(fā)的一系列問題的不少摧殘。對于任何一門編程語言,變量作用域都是一個關切的話題。正如David Herman在《Effective JavaScript》中的形象比喻,“Scope is like oxygen to a programmer”。當你“呼吸順暢”的時候,你并不會意識到變量作用域的重要性;然而當你“呼吸受阻”的時候,你便會體會到它的輕重高低。

全局作用域

絕大多數(shù)編程語言都有全局作用域的概念。全局作用域是指常量、變量、函數(shù)等對象的作用范圍在整個應用程序中都是可見的。對于不同的編程語言,全局作 用域承擔著不同的角色,也因此遭受了不少的罵名。但對于JavaScript,我并不認為它一無是處。我們要做的便是理解它并正確地使用它。

考慮下這樣一個場景。Bill和Peter在同一家公司工作,他們的薪水由兩部分組成:a和b。以下是表示他們薪水組成的數(shù)據(jù)結構。

  1. var emps = [{name:"Bill", parts:[{name:"a", salary:3000}, {name:"b", salary:2000}]}, {name:"Peter", parts:[{name:"a", salary:2500}, {name:"b", salary:2000}]}]; 

現(xiàn)在,我們希望能計算出Bill和Peter的平均薪水。以下是一段可能的程序片段。

  1. var i, n, sum; 
  2. function salary(emp) { 
  3.   sum = 0;
 
  4.   for (i = 0, n = emp.parts.length; i < n; i++) { 
  5.     sum += emp.parts[i].salary; 
  6.   } 
  7.   return sum; 
  8. function averageSalary(emps) { 
  9.   sum = 0; 
 
  10.   for (i = 0, n = emps.length; i < n; i++) { 
  11.     sum += salary(emps[i]); 
  12.   } 
  13.   return sum / n; 
  14. averageSalary(emps); 

輸出的結果并不是你口算的4750,而是2500。這是因為變量i、n和sum都是全局變量,在執(zhí)行salary(emps0)之后i的值變?yōu)榱?2,再回到averageSalary函數(shù)的循環(huán)體中時emps數(shù)組已然越界,最終sum的值只計算了emps數(shù)組中的第一個元素。

如果這樣的全局作用域問題并不會困擾你,那下面的問題似乎應當引起你的一些警覺。因為與此相比,它有點意想不到。

  1. function swap(a, i, j) { 
  2.   temp = a[i]; // global 
  3.   a[i] = a[j]; 
  4.   a[j] = temp; 

問題并不是出在交換數(shù)組元素上,而是我們無意間創(chuàng)建了一個全局的變量temp。這要完全歸功于JavaScript的語言規(guī)范—— JavaScript會將未使用var聲明的變量視為全局變量。慶幸的是,我們可以借助于類似Lint這樣的代碼檢測工具幫我們盡早地發(fā)現(xiàn)這類問題。

雖然全局變量有很多問題,然而它在支撐JavaScript模塊之間數(shù)據(jù)共享、協(xié)同合作方面確實承擔了重要的角色。此外,程序員在某些不支持ECMAScript 5的環(huán)境中利用其特性檢查的功能來填補一些ES5特有的特性確實受益良多。

  1. if (!this.JSON) { 
  2.   this.JSON = { 
  3.     parse: ..., 
  4.     stringify: ... 
  5.   }; 

詞法作用域和動態(tài)作用域

在程序設計語言中,變量可分為自由變量與約束變量兩種。簡單來說,局部變量和參數(shù)都被認為是約束變量;而不是約束變量的則是自由變量。 在馮·諾依曼計算機體系結構的內存中,變量的屬性可以視為一個六元組:(名字,地址,值,類型,生命期,作用域)。地址屬性具有明顯的馮·諾依曼體系結構 的色彩,代表變量所關聯(lián)的存儲器地址。類型規(guī)定了變量的取值范圍和可能的操作。生命期表示變量與某個存儲區(qū)地址綁定的過程。根據(jù)生命期的不同,變量可以被 分為四類:靜態(tài)、棧動態(tài)、顯式堆動態(tài)和隱式堆動態(tài)。作用域表征變量在語句中的可見范圍,分為詞法作用域和動態(tài)作用域兩種。

在詞法作用域的環(huán)境中,變量的作用域與其在代碼中所處的位置有關。由于代碼可以靜態(tài)決定(運行前就可以決定),所以變量的作用域也可以被靜態(tài)決定,因此也將該作用域稱為靜態(tài)作用域。在動態(tài)作用域的環(huán)境中,變量的作用域與代碼的執(zhí)行順序有關。下面這段代碼的輸出會是什么?

  1. x=1 
  2. function g () { 
  3.   echo $x ; 
  4.   x=2 ; 
  5. function f () { 
  6.   local x=3 ; 
  7.   g ; 
  8. echo $x 

如果你的回答是1, 2或3, 1都沒有錯,因為這取決于該段代碼所處的環(huán)境。如果處于詞法作用域中,答案便是1, 2;如果處于動態(tài)作用域中,答案便是3, 1。

詞法作用域允許程序員根據(jù)簡單的名稱替換就能推導出對象引用,例如常量、參數(shù)、函數(shù)等。這使得程序員在編寫模塊化的代碼是多么的得心應手。同時,這 可能也是動態(tài)作用域令人感覺到晦澀的原因之一。詞法作用域最早可以追溯到ALGOL語言。盡管最早的Lisp解釋器和早期的Lisp變種都采用動態(tài)作用 域,但隨后的動態(tài)作用域語言都支持了詞法作用域。Common Lisp和Perl的語言演化就是最好的證明。JavaScript和C都是詞法作用域語言。不過值得一提的是,不像JavaScript,深受 ALGOL語言影響的C語言并不支持嵌套函數(shù)。這對后來的C族語言影響深遠。除了晦澀難懂之外,現(xiàn)代程序設計語言很少支持動態(tài)作用域的原因是動態(tài)作用域使 得引用透明的所有好處蕩然無存。

臭名昭著的with語句

如果你還在使用類似下面的代碼為with語句找借口,那這正好是放棄它的真正原因。

  1. function status(info) { 
 
  2.   var widget = new Widget(); 
  3.   with (widget) { 
  4.     setFontSize(13); 
 
  5.     setText("Status: " + info); 
  6.     show(); 
  7.   } 

JavaScript會將with語句中的對象插入到詞法作用域的鏈表頭。這將使得status函數(shù)非常脆弱。例如,

  1. status("connecting"); 
  2. Widget.prototype.info = "[[widget info]]"
  3. status("connected"); 

第二次status函數(shù)調用并不會得到預期的結果“Status:connected”而是“Status:widget info”。這是因為在第二次status函數(shù)調用之前,我們修改了widget的原型對象(增加了一個info屬性)。這將導致status函數(shù)的參數(shù) info會被處于詞法作用域鏈表頭的widget對象的原型對象中的info屬性所屏蔽。除此之外,with語句還會導致性能問題。這與在采用鏈地址法解 決散列沖突的散列表中查找關鍵字是異曲同工的。下面是修正的代碼。

  1. function status(info) { 
 
  2.   var w = new Widget();
 
  3.   w.setFontSize(13); 
 
  4.   w.setText("Status: " + info); 
  5.   w.show(); 

#p#

變量聲明提升(hoisting)

JavaScript支持詞法作用域,但并不支持塊級作用域,即變量定義的作用域并不是離其最近的封閉語句或代碼塊,而是包含它們的函數(shù)。下面的代碼片段詮釋了這一特性。

  1. var emps = [{name:"Bill", salary: 5000}, {name:"Peter", salary: 3000}]; 
  2. var ben = {name:"ben", salary: 6000}; 
  3.   
  4. function isHighestSalary(emp, others) { 
  5. 
  var highest = 0;
 
  6.   for (var i = 0, n = others.length; i < n; i++) { 
  7.     var emp = others[i];
 
  8.     if (emp.salary > highest) { 
  9.       highest = emp.salary; 
  10.     } 
  11.   } 
  12.   return emp.salary > highest; 
  13. isHighestSalary(ben, emps); 

該代碼段在for循環(huán)體內聲明了一個局部變量emp。但是由于JavaScript中的變量是函數(shù)級作用域,而不是塊級作用域,所以在內部聲明的 emp變量簡單地重聲明了一個已經(jīng)在作用域內的變量(即參數(shù)emp)。該循環(huán)的每次迭代都會重寫這一變量。因此,return語句將emp視為 others的最后一個元素,而不是此函數(shù)最初的emp參數(shù)。

可以將JavaScript的變量聲明行為看作由兩部分組成,即聲明和賦值。JavaScript隱式地提升(hoists)聲明部分到封閉函數(shù)的頂部,而將賦值留在原地。

閉包

可能有這樣一個需求,程序需要計算一個數(shù)的平方。你可能定義下面這樣一個函數(shù)。

  1. function square(num) { 
  2.   return Math.pow(num, 2); 

程序又需要計算一個數(shù)的立方。你可能又會定義下面這樣一個函數(shù)。

  1. function cube(num) { 
  2.   return Math.pow(num, 3); 

當你還在考慮是否為計算一個數(shù)的四次方創(chuàng)建一個函數(shù)的時候,可能有人在草稿紙上寫了這樣的代碼。

  1. function pow(power) { 
  2.   return function(num) { 
  3.     return Math.pow(num, power); 
  4.   }; 

是的,這就是閉包。函數(shù)是一等公平,可以作為一個函數(shù)的返回對象。你可以像下面的代碼一樣計算一個數(shù)的平方和立方。

  1. var square = pow(2); 
  2. var cube = pow(3); 
  3. console.info(square(3)); 
  4. console.info(cube(3)); 

掌握JavaScript的閉包,除了理解這樣一個事實(即使外部函數(shù)已經(jīng)返回,當前函數(shù)仍然可以引用在外部函數(shù)所定義的變量)外,還需要理解閉包存儲的是外部變量的引用。我們來看這樣一個例子。

  1. function doubleArray(a) { 
  2.   var result = []; 
  3.   for (var i = 0, n = a.length; i < n; i++) { 
  4.     (function(j) { 
  5.       result[i] = function() { 
  6.         return a[j] * 2; 
  7.       }; 
  8.     })(i); 
  9.   } 
  10.   return result; 
  11. doubleArray([1, 2, 3, 4, 5])[0](); 

程序期望輸出的結果是2,即給定數(shù)組第一個元素的2倍。但結果并不是這樣。因為result數(shù)組中存儲的所有閉包引用的都是同一個引用i。很容易想到的一個解決方法便是使用立即調用的函數(shù)表達式來提供類似塊作用域的功能。

  1. function doubleArray(a) { 
  2.   var result = []; 
  3.   for (var i = 0, n = a.length; i < n; i++) { 
  4.     (function(j) { result[i] = function() { return a[j] * 2; }; })(i); 
  5.   } 
  6.   return result; 

ES6塊作用域

在年底即將發(fā)布的ES6標準中將會發(fā)布一個新的關鍵字let。它在語法上與var相似,但不同的是,它將在當前塊中定義變量。

  1. function log(msg) { ... } 
  2. function f(x) { 
  3.   if (...) { 
  4.     let { log, sin, cos } = Math; 
  5.     ... log(x) ... 
  6.   } 
  7.   log("done computing f()"); 

上面閉包引用外部變量問題,也可以通過它解決。

  1. for (i = 0; i < n; i++) { 
  2.   let x = a[i]; 
  3.   element.onclick = function() { 
  4.     ... x ... 
  5.   }; 

原文鏈接:http://cloveryu.github.io/blog/the-war-of-JavaScript-vaiiable-scope/

責任編輯:陳四芳 來源: cloveryu.github.io
相關推薦

2011-04-18 09:31:35

JavaScript

2016-12-19 11:10:32

JavaScript變量作用域

2011-09-06 09:56:24

JavaScript

2019-03-13 08:00:00

JavaScript作用域前端

2020-12-16 11:09:27

JavaScript語言開發(fā)

2009-03-16 09:39:01

函數(shù)詞法作用域Javascript

2015-07-15 15:24:25

OpenFlowSDN

2017-09-14 13:55:57

JavaScript

2021-03-09 08:50:58

JavaScript前端作用域

2010-01-07 16:16:03

VB.NET變量作用域

2011-05-20 10:12:14

接入寬帶互聯(lián)網(wǎng)

2013-05-31 02:16:07

創(chuàng)業(yè)程序員創(chuàng)業(yè)

2020-11-19 07:49:24

JS變量作用域

2021-10-28 10:26:35

Javascript 高階函數(shù)前端

2015-07-21 13:39:58

Javascript作用域

2011-05-12 18:26:08

Javascript作用域

2009-06-01 11:16:48

PHP網(wǎng)站開發(fā)變量作用域

2015-08-18 13:42:42

js作用域鏈變量

2018-10-08 13:41:01

運營商通信網(wǎng)絡攜號轉網(wǎng)

2010-02-03 16:42:45

C++變量作用域
點贊
收藏

51CTO技術棧公眾號

99精品视频国产| 伊人色综合影院| 色婷婷久久综合中文久久蜜桃av| 久久大综合网| 亚洲精品在线三区| 激情综合网俺也去| 亚洲男同gay网站| 97精品超碰一区二区三区| 国产精品老牛影院在线观看| 国产免费无码一区二区视频| 亚洲警察之高压线| 欧美一区二区三区日韩视频| 国产真实乱子伦| 性国产高清在线观看| 国产亚洲成aⅴ人片在线观看| 亚洲自拍偷拍色图| 黄色网址中文字幕| 亚洲片区在线| 免费91麻豆精品国产自产在线观看| 美女又爽又黄视频毛茸茸| 国产精品一区二区三区www| 日韩欧亚中文在线| 六月婷婷激情综合| 国内精品久久久久国产| 久久久精品影视| 国产区二精品视| 91精品国产乱码久久久久| 亚洲欧美日韩精品一区二区| 久久久久久久久久久网站| 娇小11一12╳yⅹ╳毛片| 视频国产一区| 日韩av在线高清| 美女伦理水蜜桃4| 国产一区二区久久久久| 精品视频一区 二区 三区| 黄www在线观看| 九色porny丨国产首页在线| 一区二区高清视频在线观看| 亚洲免费av网| 免费高清在线观看| 国产精品美女久久久久久| 欧美欧美一区二区| 偷拍自拍在线| av电影天堂一区二区在线观看| 97se视频在线观看| av老司机久久| 国产精品一二二区| 99久re热视频这里只有精品6| 国产精品污视频| 久久99精品国产麻豆婷婷 | www.av天天| 日本国产精品| 亚洲欧洲第一视频| 精品无码一区二区三区| 亚洲+小说+欧美+激情+另类| 日韩成人在线视频观看| 亚州av综合色区无码一区| 欧美电影在线观看完整版| 亚洲电影免费观看高清完整版在线观看 | 一本大道久久加勒比香蕉| 成人午夜剧场视频网站| 日韩国产专区| 日韩中文第一页| 日本黄色片免费观看| 欧美视频一区| 91成人在线视频| 久久99国产综合精品免费| 天堂va蜜桃一区二区三区漫画版| 国产精品久久久久9999| 国产精品亚洲lv粉色| 国产东北露脸精品视频| 精品国产乱码一区二区三区四区| 五月天婷婷激情网| 中文子幕无线码一区tr| 特级毛片在线免费观看| 在线观看wwwxxxx| 亚洲成人激情av| 精品久久久久久久无码| 亚洲综合伊人| 亚洲精品一区二区三区精华液| 好吊一区二区三区视频| 欧美色图激情小说| 欧美激情videoshd| 国产日产精品一区二区三区| 免费观看日韩av| 91黄色国产视频| 日本又骚又刺激的视频在线观看| 国产精品丝袜一区| 免费高清一区二区三区| 在线精品亚洲欧美日韩国产| 欧美日韩一级二级| 动漫av在线免费观看| 中文字幕中文字幕精品| 欧美成人午夜免费视在线看片 | 好看的日韩精品| 成年人在线观看网站| 一区二区三区不卡视频| 999香蕉视频| 国产aa精品| 亚洲欧美综合图区| 国产在线拍揄自揄拍| 日韩精品亚洲专区| 国产高清精品一区二区| 成年人视频在线看| 午夜精品久久久久久久| www.cao超碰| 色综合www| 久久国产精品免费视频| 神马久久久久久久| 成人免费视频播放| 永久域名在线精品| a一区二区三区| 日韩三级在线观看| 日本成人免费在线观看| 久久精品一区二区三区中文字幕| 亚洲专区在线视频| 二区三区在线| 欧美日韩在线视频首页| 香蕉视频xxxx| 香港欧美日韩三级黄色一级电影网站| 欧美在线视频导航| 欧美自拍第一页| 一区二区三区在线观看动漫| 日本xxxx黄色| 九九热精品视频在线观看| 久久免费视频在线观看| 国产毛片在线视频| 国产精品福利一区二区三区| 亚洲色精品三区二区一区| 久久精品亚洲成在人线av网址| 成年人精品视频| 一级片在线免费观看视频| 欧美韩国日本一区| 国产福利影院在线观看| 精品国产一区一区二区三亚瑟| 久久久视频免费观看| 亚洲av永久无码国产精品久久 | 日韩污视频在线观看| 国产91高潮流白浆在线麻豆| 女人床在线观看| 日韩高清一区| 久久99精品国产99久久6尤物| 一本色道久久综合熟妇| 中文字幕一区二区三区不卡| 欧美三级理论片| 成人a'v在线播放| 国产精品一区二区三区在线播放| 福利小视频在线观看| 欧洲生活片亚洲生活在线观看| 性猛交娇小69hd| 人人超碰91尤物精品国产| 亚洲精品白虎| 亚洲综合资源| 欧美日韩高清区| 黄色av免费观看| 欧美日韩一区二区在线播放| 国产精品亚洲无码| 天堂一区二区在线| 亚洲精品在线免费看| 亚洲成人1区| 精品综合久久久久久97| 丰满肉嫩西川结衣av| 午夜久久福利影院| 精品无人区无码乱码毛片国产| 日日嗨av一区二区三区四区| 性欧美精品一区二区三区在线播放| 日韩一区二区三免费高清在线观看| www.日韩系列| 人妻无码一区二区三区久久99| 五月天丁香久久| 中国女人特级毛片| 国产成人自拍在线| 免费黄色日本网站| 色一区二区三区四区| 99久久一区三区四区免费| 松下纱荣子在线观看| 国产一区二区三区在线观看网站| 一级全黄少妇性色生活片| 亚洲欧美色综合| 久久人人爽人人爽人人片| 蜜臀久久99精品久久久久久9| 水蜜桃在线免费观看| 国产在线播放精品| 国产精品色悠悠| 欧美24videosex性欧美| 亚洲视频在线免费观看| 国产成人三级在线播放 | 亚洲8888| 亚洲精品免费一区二区三区| 精品极品在线| 久久精品国产成人精品| 亚洲AV成人无码一二三区在线| 精品视频一区三区九区| 日本免费一二三区| 成人免费视频在线观看| 国产肉体xxxx裸体784大胆| 精品一区二区三区免费视频| 久久国产成人精品国产成人亚洲| 91精品国产乱码久久久久久久| 久久久久se| 日本少妇精品亚洲第一区| 日韩免费中文字幕| 第一中文字幕在线| 久久久精品视频成人| 黄色小视频在线免费观看| 日韩一区二区麻豆国产| 综合久久中文字幕| 精品国产福利在线| 久久成人国产精品入口| 中文字幕制服丝袜一区二区三区| 超碰男人的天堂| 国产二区国产一区在线观看| jizz18女人| 老**午夜毛片一区二区三区| 精品国产一区二区三区无码| 国产精品99视频| 日韩av电影免费在线| 中文字幕一区二区三区四区久久| 国产精品免费小视频| 色综合亚洲图丝熟| 97精品国产97久久久久久免费| a视频在线观看免费| 最新中文字幕亚洲| aaa日本高清在线播放免费观看| 日韩成人中文字幕| 亚洲免费视频网| 日韩欧美卡一卡二| 国产三级按摩推拿按摩| 欧美日韩免费视频| 中文字幕av在线免费观看| 欧美午夜丰满在线18影院| 日韩精品一区二区三区国语自制| 亚洲激情综合网| 日本高清一二三区| 亚洲免费看黄网站| 国产欧美小视频| 中文字幕第一页久久| 第一次破处视频| 国产精品婷婷午夜在线观看| 亚洲精品视频网址| 国产免费久久精品| 天堂网中文在线观看| 中文字幕在线不卡一区二区三区| 国产在线免费av| 中文字幕一区二区三区四区不卡 | 不卡视频一区| 日韩一区二区三区精品| 97人人模人人爽人人少妇| 永久免费精品视频| 成人自拍爱视频| 久久久久观看| 免费99视频| 国产一区二区三区网| 亚洲精品日韩在线观看| 天天久久综合| 日韩精品一区二区免费| 影音先锋一区| 欧美日韩亚洲第一| 奇米一区二区三区| 日韩a一级欧美一级| 成人小视频免费观看| 免费a级黄色片| 日本一区二区三区在线观看| 天天操天天摸天天舔| 亚洲麻豆国产自偷在线| 日本熟妇色xxxxx日本免费看| 欧美日韩亚洲91| 中文字幕+乱码+中文| 欧美一级高清片| 性xxxx视频| 中文字幕在线视频日韩| 超碰caoporn久久| 91精品国产高清自在线| 精品成人免费一区二区在线播放| 91色琪琪电影亚洲精品久久| 精品少妇一区| 翔田千里亚洲一二三区| 国自产拍偷拍福利精品免费一 | 久久久精品毛片| 欧美精品少妇一区二区三区| 国产 日韩 欧美 综合| 亚洲女人被黑人巨大进入al| 精品美女在线观看视频在线观看| 国内精品免费午夜毛片| 成人黄色免费网站| 国产精品国产亚洲精品看不卡15 | 精品国产三区在线| 久久久久久久久一区| 91精品福利| 激情五月开心婷婷| 国产不卡一区视频| 国产精品久久免费观看| 亚洲国产欧美日韩另类综合| 中文字幕在线观看精品| 亚洲福利视频久久| 欧美极品视频| 欧洲成人免费视频| 久久久久毛片免费观看| 日韩不卡av| 亚洲国产影院| а 天堂 在线| 久久久国产精品午夜一区ai换脸| 久久久久久国产精品视频| 欧美日韩免费观看一区三区| 神马精品久久| 欧美国产一区二区三区| 日韩城人网站| 欧美主播一区二区三区美女 久久精品人| 亚洲精品久久| 在线黄色免费观看| 国产夜色精品一区二区av| 久久精品久久国产| 91精品视频网| av在线免费播放网站| 奇米一区二区三区四区久久| caoporn成人免费视频在线| 综合久久国产| 麻豆精品一区二区综合av| 91精品人妻一区二区| 亚洲成a人片在线观看中文| 99免费在线视频| 久久影院免费观看| 久久影视精品| 亚洲 日韩 国产第一区| 久久成人亚洲| 成人网站免费观看| 欧美色视频日本高清在线观看| 国产成人三级在线播放| 另类专区欧美制服同性| 99久久这里有精品| 综合一区中文字幕| 久久精品av麻豆的观看方式| 粉嫩精品久久99综合一区| 一本一道综合狠狠老| 男人的天堂av高清在线| 日本在线精品视频| 最新国产精品视频| 国产成人精品无码播放| 国产欧美一区二区在线观看| 久久国产乱子伦精品| 亚洲三级av在线| 澳门av一区二区三区| 亚洲男人天天操| 97人妻精品一区二区三区免费| 国产亚洲综合在线| 久久精品99北条麻妃| 伊人久久久久久久久久久久久| 2022成人影院| 亚洲春色在线视频| 久久99精品久久久| 国产精品九九九九九九| 精品国产伦理网| 精精国产xxx在线视频app| 美国av一区二区三区| 日韩成人免费在线| 欧美自拍偷拍网| 欧美一区二区三区四区高清| 丝袜中文在线| 久久精品中文字幕一区二区三区 | 中文一区二区| 人妻精品久久久久中文字幕| 一本一道久久a久久精品综合蜜臀| 欧美拍拍视频| 国产美女直播视频一区| 91精品电影| 久久人妻少妇嫩草av无码专区| 欧美性猛交xxxx富婆弯腰| 在线观看精品一区二区三区| 91欧美激情另类亚洲| 影音先锋亚洲电影| 99久久久无码国产精品衣服| 欧美精品第1页| gratisvideos另类灌满| 久久久一本精品99久久精品| 蜜桃视频在线一区| 国产性猛交普通话对白| 亚洲欧美精品suv| 成人动漫视频在线观看| 女人和拘做爰正片视频| 中文字幕不卡在线观看| www久久久com| 国产精品18久久久久久首页狼| 天堂美国久久| 噜噜噜在线视频| 777欧美精品| 玛雅亚洲电影| 欧美 日韩 国产精品| 久久精品夜色噜噜亚洲aⅴ| 国产毛片在线视频| 国产成人免费av| 欧美精品观看| 一区二区三区在线观看免费视频| 欧美一级理论性理论a| 成年美女黄网站色大片不卡| 成年人三级视频| 国产色产综合色产在线视频| 亚洲乱码在线观看| 国产精品视频1区| 亚洲永久免费| 久草资源在线视频|