<thead id="kdfuf"><font id="kdfuf"></font></thead>
<samp id="kdfuf"></samp>
    <nav id="kdfuf"><strong id="kdfuf"></strong></nav>
      中文字幕无码一区二区三区在线,久久精品人人做人人爽,国产一级内射无挡观看,十八禁在线黄色网站,日韩欧美国产另类久久久精品 ,少妇人妻偷人精品一区二区,久久午夜视频,亚洲春色AⅤ无码专区

      JS學習筆記

      2021-3-19    前端達人

      JS學習筆記

      js和java的異同點

      變量聲明

      函數聲明

      js中的變量提升和函數提升

      為什么有變量提升

      總結

      js和java的異同點

      首先,js的語法和kottlin的語法有些相似。比如var,方法聲明用



        function 方法名稱 (參數名稱...){

        //方法內部邏輯

        }



      還有變量類型聲明 :



      數據類型 : 變量名=值



      區別:一:js的數據類型和java類似。只不過js中的數據類型number將java中的int,double,float整合了。

      二:js中可以不用聲明變量類型。變量不聲明數據類型的話,那么他的類型取決于當前的值是什么數據類型。舉例:



      var num=0;

      num-"lyyyyyyyyyyyyyy";

      num=[];

      num={};



      三:js中的類型判斷:



      判斷基本類型,返回一個字符串

      1

      console.log(typeof '');//string

      console.log(typeof []);//object

      console.log(typeof {});//object

      console.log(typeof 1);//number

      console.log(typeof null);//object

      console.log(typeof undefined);//undefined

      console.log(typeof true);//boolean

      console.log(typeof function(){});//function

      console.log(typeof /\d/);//object





      檢查某個對象屬于哪個構造函數,返回true/false

      1

      function A(){};

      function B(){};

      let a = new A();

      console.log(a instanceof A);

      console.log(a instanceof B);

      console.log([] instanceof Array);//true

      console.log({} instanceof Object);//true

      console.log(/\d/ instanceof RegExp);//true

      console.log(function(){} instanceof Object);//true

      console.log(function(){} instanceof Function);//true





      變量聲明

      js的變量聲明其實大體上可以分為三種:var聲明、let與const聲明和函數聲明。



      函數聲明

      doSomething();

       

      function doSomething() {

          console.log('doSomething');

      }

      var foodoSomething= 2;



      你覺得上面會輸出什么?TypeError嗎?其實輸出的結果是foo。這就引出了我們的問題了,當函數聲明與其他聲明一起出現的時候,是以誰為準呢?答案就是,函數聲明高于一切,畢竟函數是js的第一公民。



      那么,下面的例子呢?



      doSomething();

       

      function doSomething() {

          console.log('1');

      }

       

      function doSomething() {

          console.log('2');

      }



      當出現多個函數聲明,那怎么辦呢?以上代碼輸出結果為2。

      因為有多個函數聲明的時候,是由最后面的函數聲明來替代前面的。



      domeSomething();

       

      var domeSomething= function() {

          console.log('domeSomething');

      }



      var domeSomething = function() {}這種格式我們叫做函數表達式。



      它其實也是分為兩部分,一部分是var foo,而一部分是foo = function() {},參照例2,我們可以知道,這道題的結果應該是報了TypeError(因為foo聲明但未賦值,因此foo是undefined)。



      js中的變量提升和函數提升

      在js中對變量進行操作后打印值經常會出現undefined的現象。其實原因是因為js中有一個叫做變量提升的功能。舉例:

      1

      var data="lyyyyy";

      getData();

      function getData(){

      //第一次打印

      console.log("data值為: ", data);

      var data="yyyyyyy";

      //第二次打印

      console.log("data值為: ", data);

      }



      打印的值第一個為undefined,而第二個打印的值為yyyyy.



      原因:

      在執行getData()方法的時候會在函數內部首先將變量的聲明提升到第一步。

      然后再聲明函數內部的函數(如果函數內部有函數的話)。

      之后才會按照方法內部的邏輯先后順序執行代碼。前兩步只是聲明!?。?br />
      看到這里應該就已經知道為什么會有上面那樣的結果了。



      實際的方法內部代碼執行順序應該是這樣的:



      function getData(){

      //一。聲明變量

      var data;

      //二。聲明函數(如果函數內部有函數的話)



      //三。按照代碼的順序執行

      console.log("data值為: ", data);

      data="yyyyyyy";

      //第二次打印

      console.log("data值為: ", data);

      }



      看到拆分后的代碼執行順序對結果也就不迷茫了。



      為什么有變量提升

      那么為什么會出現變量提升這個現象呢?



      其實js和其他語言一樣,都要經歷編譯和執行階段。而js在編譯階段的時候,會搜集所有的變量聲明并且提前聲明變量,而其他的語句都不會改變他們的順序,因此,在編譯階段的時候,第一步就已經執行了,而第二步則是在執行階段執行到該語句的時候才執行。



      總結

      1.js會將變量的聲明提升到js頂部執行,因此對于這種語句:var a = 2;其實上js會將其分為var a;和a = 2;兩部分,并且將var a這一步提升到頂部執行。



      2.變量提升的本質其實是由于js引擎在編譯的時候,就將所有的變量聲明了,因此在執行的時候,所有的變量都已經完成聲明。

      3.當有多個同名變量聲明的時候,函數聲明會覆蓋其他的聲明。如果有多個函數聲明,則是由最后的一個函數聲明覆蓋之前所有的聲明。


      ————————————————
      版權聲明:本文為CSDN博主的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。


      藍藍設計www.tuitetiyu.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服


      日歷

      鏈接

      個人資料

      藍藍設計的小編 http://www.tuitetiyu.cn

      存檔

      主站蜘蛛池模板: 9久9久女女热精品视频免费| 国产精品欧美久久久久无广告| 国语在线观看对白刺激| 一区二区三区无码视频| а√在线中文网新版地址在线| 国产欧美日本亚洲精品一5| 狠狠做深爱婷婷久久综合一区| 密山市| 激情综合色综合啪啪开心| 国产精品一区二区20P| 色一情一乱一伦麻豆| 无码少妇一区二区三区奂费| 国产极品美女网站在线观看| 在线看午夜福利片国产片 | 国产精品不卡区一区二| 精品国产AⅤ一区二区三区V免费| 性刺激欧美三级在线现看中文| 永城市| 在线一区二区三区一本到| 亚洲人成影院在线无码按摩店| 2021中文字幕在线播放| 玉环县| 欧美人牲交a欧美精区日韩| 国产精品 高清 尿 小便 嘘嘘| 一区在线观看免费高清中文| 男女一边摸一边做爽视频| 伊人久久大香线蕉AV一区移动| 久久se精品视频最新| 成人白浆超碰人人人人| 日韩中文字幕中文无码久本草| 色悠久久久久久久综合| 91无码人妻精品| 亚洲JAV无码| 日韩中文字幕在线视频| 一级黄色片免费看| 人妻换人妻仑乱| 精品国产一区二区三区香蕉下载 | 亚洲一区二区日韩综合久久| 亚洲欧洲自拍拍偷午夜色观看视频| 工口全彩肉肉无遮挡彩色无码网站 | av天堂亚洲国产av|