国产精品美女久久久浪潮AV,国产精品三级一二三区,久久精品国产一区二区小说 ,依依成人影视国产精品,全部无卡免费的毛片在线看,日本一区二区三深夜不卡,国产精品女同一区二区久久,国产精品夜色一区二区三区

        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()方法的時候會在函數內部首先將變量的聲明提升到第一步。

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

        之后才會按照方法內部的邏輯先后順序執行代碼。前兩步只是聲明!!!

        看到這里應該就已經知道為什么會有上面那樣的結果了。



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



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


        日歷

        鏈接

        個人資料

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

        存檔

        主站蜘蛛池模板: 一色屋精品视频在线观看| 欧美另类亚洲中文字幕| 国产偷人妻精品一区二区在线| 少妇bbbb| 国产性夜夜春夜夜爽| 男男h黄漫画啪啪无遮挡| 罗江县| 国产又爽又黄无码无遮挡在线观看| 国内精品久久久久久久小说| 无码av天天av天天爽| 中文幕无线码中文字蜜桃| 小姑娘完整中文在线观看| 和硕县| 丁香色婷婷国产精品视频| 老太性开放bbwbbwbbw| 日韩精品一区二区三区| 熟睡被义子侵犯在线观看| 无码aⅴ精品一区二区三区浪潮| 宜兰县| 啊灬啊灬啊灬快灬高潮了电影片段| 国产又色又爽无遮挡免费| 少妇真人直播app| 成人毛片一区二区| 野花电影免费观看| 少妇高潮惨叫久久久久电影| 亚洲免费人成在线视频观看| 天天躁日日躁狠狠躁视频2021| 人妻中文无码久热丝袜| 观塘区| 中文字幕无线乱码人妻| 少妇 人妻 欧美| 一个人看www在线观看| caoporn国产精品免费视频| 亚洲av 无码片一区二区三区| 亚洲欧洲专线一区| 极品少妇被后入内射视| 西西人体大胆扒开下部337卩| 曰本无码人妻丰满熟妇5g影院| 国产一区二区三区日韩精品| 亚洲精品456在线播放| 一个人看的www视频在线播放|