gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

javascript聲明變量的4種方法是什么

javascript聲明變量的4種方法:1、使用“var”聲明變量,例“var a;”;2、使用“function”聲明變量,例“function Fun (num) {}”;3、使用“let”聲明變量;4、使用“const”聲明變量。

javascript聲明變量的4種方法是什么

本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

聲明變量的方式

JavaScript 變量聲明的方式有下面幾種:

  • ES6之前是 var 和 function
  • ES6中新增 let 和 const

function 是一種聲明變量的方式?

我們來驗證一下

驗證方法一:

    function repeatFun (num) {       return num;     }      repeatFun(10); // 10      var repeatFun = 1;      repeatFun(2); // Uncaught TypeError: repeatFun is not a function

這種方法是利用 var可以重復聲明變量,但是會后者覆蓋會覆蓋前者的特點

我們來看看這里發生來什么事:

  • 首先是聲明了一個函數,他的名字是 repeatFun
  • 緊接調用一次,得到結果為10
  • 之后用 var 又聲明了一次 repeatFun , 并初始化為 1
  • 最后調用一次 repeatFun 這個函數
  • 結果就是報錯 ,內容: repeatFun 不是一個函數

根據執行結果我們可以推斷出在瀏覽器的內存中存在一個 repeatFun 變量,之前是一個函數,后來被一個 var 關鍵字重新聲明并初識化為 1。

驗證方法二:

    {       let repeatFun = 1;       function repeatFun (num) {         return num       }     }     // Uncaught SyntaxError: Identifier 'repeatFun' has already been declared

第二種方法我是利用

ES6的一個語法:利用 let 不能重復聲明的特性來證明 function 也是一種聲明變量的方式


var ,let , const 的不同點:

  • 變量聲明提升

    • var 有變量聲明提升的功能,可以先使用然后再聲明,反之也成立
    • let 和 const 則沒有變量聲明提升的功能,必須要先聲明才能使用
  • 重復聲明

    • var 能重復聲明,后者覆蓋前者
    • let 和 const 則不能重復聲明
  • 作用域的范圍

    • var 的作用域是以函數為界限
    • let 和 const 是塊作用域
    • var 可以定義全局變量和局部變量,let 和 const 只能定義局部變量
  • const 的特殊之處

    • 聲明之后不能被修改(引用類型和基本類型的表現有些地方不一樣)

變量聲明提升

  • var 是有變量聲明提升的功能,可以先使用然后再聲明
  • let 和 const 則沒有變量聲明提升的功能,必須要先聲明才能使用

例子一,驗證 var 變量提升:

var b = a + 1; // b: NaN  var a = 1; // a: 1

首先是先聲明來一個變量 b 并進行初識化,初始化的值為 a + 1(a 的值是多少?)
然后緊接是聲明了一個變量 a ,初識化為 1
這是代碼表面上就是做著這些事,實際上做的事情是這樣:

  • 在每次聲明一個變量的時候,他們的聲明都是放在代碼的最上面,并且他們都是要進行一次初始化,值為:undefined,但是賦值的位置是不會改變,
  • 然后再進行其他的操作

下面寫法同樣可以實現一樣的效果

var b; var a;  b = a +1; // b: NaN  a = 1; // a: 1

let 和 const 則與 var 的表現則不同

例子二,驗證 let 是否存在變量提升:

let b = a + 1; // Uncaught ReferenceError: a is not defined let a = 1;

在運行的時候直接拋出范圍錯誤,若這樣改一下,就沒有錯誤:

let a = 1; // a: 1 let b = a + 1; // b: 2

const 和 let在變量提升方面的表現是一致


重復聲明

  • var 能重復聲明,后者覆蓋前者
  • let 和 const 則不能重復聲明

    例子一,驗證 var 的重復聲明:

    var a = 1; var a = 2; var b = a + 1; // 3
    • 首先是聲明變量 a ,初始化為1
    • 緊接再次聲明變量 a, 初始化為2
    • 最后聲明變量 b , 它初始化值是 a + 1

    例子二,驗證 let 的重復聲明:

    let a = 1; let a = 2; // Uncaught SyntaxError: Identifier 'a' has already been declared
    var a = 1; let a = 2; //Uncaught SyntaxError: Identifier 'a' has already been declared
    • 很顯然在同一個執行環境中使用 let 進行聲明的變量是不能重復聲明,否則會拋出錯誤
      const 和 let 在重復聲明方面的表現是一致

作用域的范圍

  • var 的作用域是以函數為界限
  • let 和 const 是塊作用域
  • var 可以定義全局變量和局部變量,let 和 const 只能定義局部變量

封裝一個階乘函數來舉例,沒有使用尾遞歸,就是使用 for 和 if 的搭配實現
例子一,階乘函數驗證作用域域范圍:

  var num = 5;    function factorial(num) {        var result = 1,resultValue = 0;        for (let i = num - 1; i >= 1; i--) {          if (i === num - 1) {           resultValue = num * i;         }else{           resultValue = num * i / num;         }          result *= resultValue;       }        // i 是用 let 進行定義它的作用域僅僅被限制在 for 循環的區域內       // i++;// Uncaught ReferenceError: i is not defined        return result;   }    // result 是用 var 進行定義,他的活動區域在 factorial 函數內   // result++; // var的作用域.html:34 Uncaught ReferenceError: result is not defined    factorial(num); // 120

const 和 let 在作用域的范圍的表現也是一樣

例子二,驗證 const 的作用域:

  {     const NUM_1 = 10;   }    let b = NUM_1 + 1;  // Uncaught ReferenceError: NUM_1 is not defined

例子三,驗證 var 可以定義全局變量,let 和 const 只能定義局部變量

  // 可以掛載到全局作用域上   // var name = 'window scoped';    let name = 'let scoped'; //是不掛載到全局作用域中    let obj = {     name: 'myName',     sayName () {         return function () {         console.log(this.name); // 打印出來為空       };     }   }    obj.sayName()();   console.log(window); //name 這個屬性的值沒有,如下圖

javascript聲明變量的4種方法是什么

若這樣改一下就可以得到我們想要的值:

  • 把用 var 定義的 name 的代碼取消注釋,把用 let 定義的 name 的代碼注釋。

這個同時也涉及到新問題 this 的指向。后面的文章再詳細舉例驗證


const 的特殊之處

const 與 let , var 其實還是有些地方不一樣的

例子1:驗證 const 的特殊之處(一)

const NUM = 100;   NUM = 1000; // Uncaught TypeError: Assignment to constant variable
  • 經過 const 方式進行聲明,之后賦值完畢,則不可以進行改變,否則會報錯

但是也有例外

例子二:驗證 const 的特殊之處(二)

  const obj = {     name: 'xiaoMing',     sayName () {       return this.name     }   };   obj.sayName(); // xiaoMing    obj.name = 'xiaoHong';   obj.sayName(); // xiaoHong
  • 使用 const 首先聲明一個變量 obj , 并且這個變量指向我們在內存中創建的對象,你會發現我們改變里面的屬性是沒有任何問題

若這樣改一下:
例子三:驗證 const 的特殊之處(三)

  const obj = {     name:'xiaoMing',     sayName(){       return this.name     }   };    obj = {}; // Uncaught TypeError: Assignment to constant variable
  • 若改變該變量的指向的對象,則就會報錯。這種錯誤和 「 驗證 const 的特殊之處(一)」的錯誤是一樣的

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
国产性xxxx18免费观看视频| 97公开免费视频| 无码 制服 丝袜 国产 另类| 热久久精品国产| 成年在线观看视频| 四季av一区二区三区| 国产精品久久久久久久乖乖| 中文字幕第88页| 你真棒插曲来救救我在线观看| 日韩欧美猛交xxxxx无码| 三级一区二区三区| 国产综合免费视频| 亚洲天堂av一区二区三区| av在线无限看| 五月天丁香花婷婷| 18禁裸男晨勃露j毛免费观看| 国产欧美高清在线| 日本网站在线看| 韩国日本美国免费毛片| 中文字幕一区二区三区四区五区人| 欧美成人福利在线观看| 日韩精品一区二区在线视频| 五月婷婷丁香综合网| 丁香婷婷激情网| 亚洲精品天堂成人片av在线播放| 免费在线观看毛片网站| 日本黄网站色大片免费观看| 欧美xxxxxbbbbb| 91av资源网| heyzo国产| 伊人网在线免费| 天天综合网日韩| 日韩av新片网| 老司机av福利| 手机av在线网站| 久久黄色免费看| 99999精品| 小泽玛利亚视频在线观看| 欧洲精品一区二区三区久久| 男女啪啪的视频| 在线观看免费av网址| 日韩在线第三页| 国产中文字幕视频在线观看| 精品久久久噜噜噜噜久久图片| 国产精品69久久久| 国产成人免费高清视频| 国产aⅴ爽av久久久久| 精品久久久噜噜噜噜久久图片| 久草资源站在线观看| 一二三四视频社区在线| 色www免费视频| 亚洲福利精品视频| 日韩福利视频在线| 男人添女人下面免费视频| 男人天堂网视频| 国产黄色特级片| 50路60路老熟妇啪啪| 无码人妻丰满熟妇区毛片| 日韩在线xxx| 国产熟女高潮视频| 男女爽爽爽视频| 三年中国国语在线播放免费| 91欧美视频在线| 久久久久国产一区| 午夜视频在线网站| 日韩精品视频网址| 欧美日韩在线免费观看视频| 爱爱爱爱免费视频| 久久久久久三级| 中文av一区二区三区| 蜜臀一区二区三区精品免费视频| 天天插天天操天天射| 亚洲xxx在线观看| www.99riav| 九一国产精品视频| 久久婷婷国产91天堂综合精品| 色七七在线观看| 最新av在线免费观看| 国产91在线亚洲| 男人天堂1024| 污网站在线免费| 中国老女人av| 欧美丰满熟妇bbbbbb百度| 一区二区三区 欧美| www.午夜色| 水蜜桃色314在线观看| 亚洲三级视频网站| 国产亚洲精品久久久久久久| 俄罗斯av网站| www.久久com| 女人喷潮完整视频| 色偷偷中文字幕| 97成人在线免费视频| 亚洲欧美手机在线| 国产欧美日韩网站| 国产一区二区在线观看免费视频| 欧美亚洲黄色片| 制服丝袜综合网| 69sex久久精品国产麻豆| www.精品在线| 2018日日夜夜| 图片区乱熟图片区亚洲| 337p粉嫩大胆噜噜噜鲁| 一本之道在线视频| 欧美国产日韩在线播放| 大西瓜av在线| 国产精品自在自线| 日韩精品一区中文字幕| 久草视频这里只有精品| 在线观看中文av| 国模杨依粉嫩蝴蝶150p| 欧美视频在线观看视频| 国产精品美女在线播放| www.se五月| 成年人免费在线播放| www.日本少妇| 福利在线小视频| 日韩精品视频网址| 亚洲天堂一区二区在线观看| 欧美伦理视频在线观看| 国产a视频免费观看| 内射国产内射夫妻免费频道| 成人av在线播放观看| 国产精品99久久久久久大便| 亚洲高清免费在线观看| 一区二区在线播放视频| 北条麻妃视频在线| 无码日韩人妻精品久久蜜桃| 男人添女人下面高潮视频| 国产精品国三级国产av| 九一免费在线观看| 国产免费xxx| 丰满女人性猛交| 亚洲高潮无码久久| 日韩视频 中文字幕| 成人在线免费观看网址| 潘金莲一级淫片aaaaa免费看| 三级av免费看| a级黄色片网站| 特级西西444| 131美女爱做视频| 国产极品粉嫩福利姬萌白酱| 久久综合色视频| 国产精品免费观看久久| caoporn超碰97| 国产免费中文字幕| 精品一区二区三区毛片| 日韩av在线播放不卡| 亚洲色成人一区二区三区小说| 久久精品99国产| 在线观看免费视频高清游戏推荐| 999这里有精品| 久操手机在线视频| 国产一级片黄色| 亚洲妇熟xx妇色黄蜜桃| 国产精品免费看久久久无码| 久久久性生活视频| 怡红院亚洲色图| 免费观看中文字幕| 欧美a v在线播放| 日本中文字幕影院| 91视频 - 88av| 成年人免费在线播放| 日日夜夜精品视频免费观看| 成人短视频在线观看免费| 久久精品香蕉视频| 91社在线播放| 日韩毛片在线免费看| 不卡的在线视频| 欧美a v在线播放| 北条麻妃亚洲一区| 白嫩少妇丰满一区二区| 黄色特一级视频| 精品少妇无遮挡毛片| 日韩极品视频在线观看 | 欧美日韩在线免费播放| 三级av免费看| 老熟妇仑乱视频一区二区| 精品日韩在线播放| 另类小说第一页| 日韩中文字幕在线免费| 狠狠操狠狠干视频| 色综合av综合无码综合网站| 欧美少妇在线观看| 中文字幕精品一区二区三区在线| aa在线免费观看| 成人免费看片'免费看| 色噜噜狠狠一区二区| 免费在线观看的av网站| 粉嫩av一区二区三区天美传媒 | 日韩小视频网站| av动漫免费观看| 一级在线免费视频| 99色精品视频| 欧美大片在线播放| 少妇久久久久久被弄到高潮| 久久精品亚洲天堂| 亚洲综合20p| 色噜噜狠狠一区二区三区狼国成人| 久久精品网站视频|