成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《JavaScript高級(jí)程序設(shè)計(jì)》筆記:基本概念(三)

jas0n / 1111人閱讀

摘要:數(shù)據(jù)類型中有種簡(jiǎn)單數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型和。因?yàn)樘厥庵当徽J(rèn)為是一個(gè)空的對(duì)象引用。盡管和有這樣的關(guān)系,但它們的用途完全不同。這樣做不僅可以體現(xiàn)作為空對(duì)象指針的慣例,而且也有助于進(jìn)一步區(qū)分和。

數(shù)據(jù)類型

ECMAScript中有5種簡(jiǎn)單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):undefined,null,boolean,number和string

typeof

typeof null會(huì)返回“object”。因?yàn)樘厥庵?b>null被認(rèn)為是一個(gè)空的對(duì)象引用。

undefined

undefined類型只有一個(gè)值,即特殊的undefined。在使用var聲明變量,但沒(méi)有對(duì)變量進(jìn)行初始化時(shí),這個(gè)變量的值就是undefined。

對(duì)未初始化的變量執(zhí)行typeof操作符會(huì)返回undefined,而對(duì)未聲明的變量執(zhí)行typeof操作符同樣也會(huì)返回undefined。

var message;
alert(typeof message); // undefined
alert(typeof age); // undefined
null

null類型是第二個(gè)只有一個(gè)值的數(shù)據(jù)類型,這個(gè)特殊的值是null。從邏輯角度上看,null值表示一個(gè)空對(duì)象指針,而這也正是使用typeof操作符檢測(cè)null值會(huì)返回“object”的原因。

alert(null==undefined); // true

這里,位于null和undefined之間的相等操作符(==)總是返回true。

盡管null和undefined有這樣的關(guān)系,但它們的用途完全不同。如前所述,無(wú)論在什么情況下都沒(méi)有必要把一個(gè)變量顯式地設(shè)置為undefined,可是同樣的規(guī)則對(duì)null卻不適用。換句話說(shuō),只要意在保存對(duì)象的變量還沒(méi)有真正保存對(duì)象,就應(yīng)該明確地讓該變量保存null值。這樣做不僅可以體現(xiàn)null作為空對(duì)象指針的慣例,而且也有助于進(jìn)一步區(qū)分null和undefined。

Boolean類型

該類型只有兩個(gè)字面值:true和false。這2個(gè)值跟數(shù)字值不是同一回事,因?yàn)閠rue不一定等于1,false不一定等于0。該類型的2個(gè)值是區(qū)分大小寫(xiě)的。
雖然Boolean類型只有兩個(gè)字面值,但ECMAScript所有類型的值都有與這兩個(gè)Boolean值等價(jià)的值。要將一個(gè)值轉(zhuǎn)換為其對(duì)應(yīng)的Boolean值,可以調(diào)用轉(zhuǎn)型函數(shù)Boolean()。

var message="hello world!";
var messageAsBoolean=Boolean(message);
console.log(messageAsBoolean);// true
Number類型 浮點(diǎn)數(shù)值

浮點(diǎn)數(shù)值的最高精度是17位小數(shù),但在進(jìn)行算術(shù)計(jì)算時(shí)其精確度遠(yuǎn)不如整數(shù)。例如,0.1加0.2的結(jié)果不是0.3,而是0.300000000000000004,這個(gè)小小的舍入誤差會(huì)導(dǎo)致無(wú)法測(cè)試特定的浮點(diǎn)數(shù)值。

var a=0.2,b=0.1;
    if(a+b==0.3){
        console.log("you got 0.3.");
    }

我們測(cè)試這兩個(gè)數(shù)的和不等于3,如果這2個(gè)數(shù)是0.25和0.05,或者是0.15和0.15,結(jié)果都是沒(méi)有問(wèn)題的。如果是0.1和0.2,那么測(cè)試無(wú)法通過(guò)。因此,永遠(yuǎn)不要測(cè)試某個(gè)特定的浮點(diǎn)數(shù)值。

NaN

NaN的兩個(gè)特點(diǎn),一是任何涉及NaN的操作(例如NaN/10)都會(huì)返回NaN,這個(gè)特點(diǎn)在多步計(jì)算中有可能導(dǎo)致問(wèn)題。其次,NaN與任何值都不相等,包括NaN本身。

isNaN()函數(shù)接收一個(gè)參數(shù),該參數(shù)可以是任何類型,而函數(shù)會(huì)幫我們確定這個(gè)參數(shù)是否“不是數(shù)值”,isNaN()在接收這個(gè)值后,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值。而任何不能被轉(zhuǎn)換為數(shù)值的值都會(huì)導(dǎo)致這個(gè)函數(shù)返回true.

alert(NaN==NaN); // false
alert(isNaN(isNaN)); // true
alert(isNaN(10)); // false
alert(isNaN("10")); // false
alert(isNaN("blue")); // true
alert(isNaN(true)); // false
數(shù)值轉(zhuǎn)換

Number(), parseInt(),parseFloat()

Number()函數(shù)的轉(zhuǎn)換規(guī)則如下:

如果boolean值,true和false將分別被轉(zhuǎn)換為1和0

如果是數(shù)字值,只是簡(jiǎn)單的傳入和返回

如果是null值,返回0

如果是undefined,返回NaN

操作符 一元操作符 遞增和遞減操作符

執(zhí)行前置遞增和遞減操作時(shí),變量的值都是在語(yǔ)句被求值以前改變的。(在計(jì)算機(jī)科學(xué)領(lǐng)域,這種情況通常被稱為副效應(yīng)

var age = 29;
var anotherAge = --age +2;

alert(age); // 28
alert(anotherAge); // 30

由于前置遞增和遞減操作與執(zhí)行語(yǔ)句的優(yōu)先級(jí)相等,因此整個(gè)語(yǔ)句會(huì)從左至右被求值。

var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2; // 等于21
var num4 = num1 + num2; // 等于21

后置型遞增和遞減操作符的語(yǔ)法不變(仍然分別是++和--),只不過(guò)要放在變量的后面而不是前面。后置遞增和遞減與前置遞增和遞減有一個(gè)非常重要的區(qū)別,即遞增和遞減操作是在包含他們的語(yǔ)句被求值之后才執(zhí)行的。

var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; // 等于22
var num4 = num1 + num2; // 等于21
一元加和減操作符

在對(duì)非數(shù)值應(yīng)用一元加操作符時(shí),該操作符會(huì)像Number()轉(zhuǎn)型函數(shù)一樣對(duì)這個(gè)值執(zhí)行轉(zhuǎn)換。換句話說(shuō),布爾值false和true將被轉(zhuǎn)換為0和1,字符串值會(huì)被按照一組特殊的規(guī)則進(jìn)行解析,而對(duì)象是先調(diào)用它們的valueOf()和toString()方法,再轉(zhuǎn)換得到的值。

var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
    valueOf : function(){
         return -1;
    }
}

s1 = +s1; // 1
s2 = +s2; // 1.1
s3 = +s3; // NaN
b = +b; // 0
f = +f; // 1.1
o = +o; // -1

一元減操作符只要用于表示負(fù)數(shù),例如將1轉(zhuǎn)換成-1。

一元加和減操作符只要用于基本的算術(shù)運(yùn)算,也可以像前面的示例所展示的一樣用于轉(zhuǎn)換數(shù)據(jù)類型。

加性操作符

加法

var result1 = 5+5;
alert(result1); // 10

var result2 = 5+"5";
alert(result2); // "55"

減法

var result1 = 5 - true; //4
var result2 = NaN -1; // NaN
var result3 = 5-3; //2
var result4 = 5 - ""; //5
var result5 = 5 - "2"; // 3
var result6 = 5 - null; // 5
相等操作符
null == undefined; // true
"NaN" == NaN; // false
5 == NaN; // false
NaN == NaN; // false
NaN != NaN; // true
false ==0; // true
true == 1; // true
true == 2; // false
undefined ==0; false
null ==0; false
"5"==5; // true

記?。簄ull == undefined會(huì)返回true,因?yàn)樗鼈兪穷愃频闹?;但null===undefined會(huì)返回false,因?yàn)樗鼈兪遣煌愋偷闹怠?/p> 函數(shù)

function sum(num1, num2){
    return num1 + num2;
    alert("Hello world"); // 永遠(yuǎn)不會(huì)放棄
}

這個(gè)函數(shù)會(huì)在執(zhí)行完return 語(yǔ)句之后停止并立即退出。因此,位于return 語(yǔ)句之后的任何代碼都不會(huì)執(zhí)行。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87584.html

相關(guān)文章

  • JavaScript高級(jí)程序設(shè)計(jì)筆記基本概念

    摘要:一寫(xiě)在前面最近重讀高級(jí)程序設(shè)計(jì),總結(jié)下來(lái),查漏補(bǔ)缺。但這種影響是單向的修改命名參數(shù)不會(huì)改變中對(duì)應(yīng)的值。這是因?yàn)閷?duì)象的長(zhǎng)度是由傳入的參數(shù)個(gè)數(shù)決定的,不是由定義函數(shù)時(shí)的命名參數(shù)的個(gè)數(shù)決定的。實(shí)際改變會(huì)同步,改變也會(huì)同步 一、寫(xiě)在前面 最近重讀《JavaScript高級(jí)程序設(shè)計(jì)》,總結(jié)下來(lái),查漏補(bǔ)缺。 二、JS簡(jiǎn)介 2.1 JS組成 ECMAscript:以ECMA-262為基礎(chǔ)的語(yǔ)言,由...

    ygyooo 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)學(xué)習(xí)筆記基本語(yǔ)法)

    摘要:數(shù)據(jù)類型中有種簡(jiǎn)單數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型和。在中非空字符串,非零數(shù)字,任意對(duì)象,都被認(rèn)為。而空字符串,和,,認(rèn)為是。用于表示整數(shù)和浮點(diǎn)數(shù)。標(biāo)識(shí)符由數(shù)字字母下劃線美元符組成,但首字母不能是數(shù)字。變量方法對(duì)象命名推薦駝峰法。 JavaScript語(yǔ)法 一.語(yǔ)法簡(jiǎn)介 因?yàn)镴avaScript語(yǔ)法和Java等語(yǔ)法非常類似。所以只是簡(jiǎn)單介紹一下。 大小寫(xiě) JavaScript是大小寫(xiě)敏感的語(yǔ)...

    Mike617 評(píng)論0 收藏0
  • javascript高級(jí)程序設(shè)計(jì)筆記:內(nèi)存與執(zhí)行環(huán)境

    摘要:因此,所有在方法中定義的變量都是放在棧內(nèi)存中的當(dāng)我們?cè)诔绦蛑袆?chuàng)建一個(gè)對(duì)象時(shí),這個(gè)對(duì)象將被保存到運(yùn)行時(shí)數(shù)據(jù)區(qū)中,以便反復(fù)利用因?yàn)閷?duì)象的創(chuàng)建成本通常較大,這個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū)就是堆內(nèi)存。 上一篇:《javascript高級(jí)程序設(shè)計(jì)》筆記:繼承近幾篇博客都會(huì)圍繞著圖中的知識(shí)點(diǎn)展開(kāi) showImg(https://segmentfault.com/img/bVY0C4?w=1330&h=618);...

    fuyi501 評(píng)論0 收藏0
  • 004-讀書(shū)筆記-JavaScript高級(jí)程序設(shè)計(jì) 基本概念(下)

    摘要:操作符,會(huì)將數(shù)值改變正數(shù)變成負(fù)數(shù)負(fù)數(shù)變成正數(shù)。同時(shí),也說(shuō)明了,使用兩個(gè)邏輯非操作符和的操作結(jié)果相同。操作符得到的是余數(shù)。不相等操作符有兩種。 這篇筆記的內(nèi)容對(duì)應(yīng)的是《JavaScript高級(jí)程序設(shè)計(jì)(第三版)》中的第三章。 1.操作符 1-1 一元操作符 遞增和遞減操作符 遞增和遞減操作符有兩個(gè) ++ 和 --。一元操作符使用的時(shí)候,可以前置也可以后置。由于兩個(gè)操作方式類似,先只說(shuō)明 ...

    nevermind 評(píng)論0 收藏0
  • JS高級(jí)程序設(shè)計(jì)(1-3章)-筆記

    摘要:寫(xiě)在前面本文記錄的是我不熟悉或者我認(rèn)為值得注意的地方,并不是書(shū)上知識(shí)點(diǎn)的概括。再就是畫(huà)圖這種。與瀏覽器沒(méi)有依賴關(guān)系。 寫(xiě)在前面 本文記錄的是我不熟悉或者我認(rèn)為值得注意的地方,并不是書(shū)上知識(shí)點(diǎn)的概括。 第1章 JavaScript簡(jiǎn)介 JS誕生時(shí)間:1995年(好年輕...) JS誕生背景:表單數(shù)據(jù)合法性由服務(wù)端驗(yàn)證的用戶體驗(yàn)不好,希望能在客戶端進(jìn)行驗(yàn)證 JS現(xiàn)在用處:如果沒(méi)有...

    Cristic 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<