国产精品爱久久久久久久小说,女人扒开腿让男人桶到爽 ,亚洲欧美国产双大乳头,国产成人精品综合久久久久,国产精品制服丝袜无码,免费无码精品黄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.dzxscac.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服


            日歷

            鏈接

            個人資料

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

            存檔

            主站蜘蛛池模板: 欧洲精品码一区二区三区| 日本黄色三级网站| 中文有码无码人妻在线| 老湿机国产福利视频| 欧洲一级视频| AV人摸人人人澡人人超碰| 亚洲乱码尤物193yw| 男人的天堂久久| 91久热| 九九热av| 中文字幕国产精品二区| 18禁床震无遮掩视频| 黄色一级在线观看| 少妇毛片视频| 精品一区二区三区在线观看视频| 中文字幕无线码一区2020青青| 国产一级影片| 内射极品少妇xxxxxhd| 蜜国产精品jk白丝av网站| 亚洲成人日韩| 亚洲人成电影网站 久久影视| 久久亚洲欧美日本精品| 最新国产视频| 爱爱视频日本| 国产精品人妻一码二码尿失禁 | 中文字幕在线视频不卡一区二区| 亚洲精品久久久一区| 国产超碰| 麻豆91av| 1区2区3区高清视频| 国内精品一线二线三线黄| 超碰激情| 97影院手机版| 强开小婷嫩苞又嫩又紧视频韩国| 午夜尤物禁止18点击进入| 日本久操| 精品日韩人妻中文字幕 | 成人激情视频网| 骚狐网站| 乱码人妻一区二区三区| 欧美日韩精品一区二区性色a+v |