摘要:數據類型中有種簡單數據類型也稱為基本數據類型和。因為特殊值被認為是一個空的對象引用。盡管和有這樣的關系,但它們的用途完全不同。這樣做不僅可以體現作為空對象指針的慣例,而且也有助于進一步區分和。
數據類型
ECMAScript中有5種簡單數據類型(也稱為基本數據類型):undefined,null,boolean,number和string。
typeoftypeof null會返回“object”。因為特殊值null被認為是一個空的對象引用。
undefinedundefined類型只有一個值,即特殊的undefined。在使用var聲明變量,但沒有對變量進行初始化時,這個變量的值就是undefined。
對未初始化的變量執行typeof操作符會返回undefined,而對未聲明的變量執行typeof操作符同樣也會返回undefined。
var message; alert(typeof message); // undefined alert(typeof age); // undefinednull
null類型是第二個只有一個值的數據類型,這個特殊的值是null。從邏輯角度上看,null值表示一個空對象指針,而這也正是使用typeof操作符檢測null值會返回“object”的原因。
alert(null==undefined); // true
這里,位于null和undefined之間的相等操作符(==)總是返回true。
盡管null和undefined有這樣的關系,但它們的用途完全不同。如前所述,無論在什么情況下都沒有必要把一個變量顯式地設置為undefined,可是同樣的規則對null卻不適用。換句話說,只要意在保存對象的變量還沒有真正保存對象,就應該明確地讓該變量保存null值。這樣做不僅可以體現null作為空對象指針的慣例,而且也有助于進一步區分null和undefined。
Boolean類型該類型只有兩個字面值:true和false。這2個值跟數字值不是同一回事,因為true不一定等于1,false不一定等于0。該類型的2個值是區分大小寫的。
雖然Boolean類型只有兩個字面值,但ECMAScript所有類型的值都有與這兩個Boolean值等價的值。要將一個值轉換為其對應的Boolean值,可以調用轉型函數Boolean()。
var message="hello world!"; var messageAsBoolean=Boolean(message); console.log(messageAsBoolean);// trueNumber類型 浮點數值
浮點數值的最高精度是17位小數,但在進行算術計算時其精確度遠不如整數。例如,0.1加0.2的結果不是0.3,而是0.300000000000000004,這個小小的舍入誤差會導致無法測試特定的浮點數值。
var a=0.2,b=0.1; if(a+b==0.3){ console.log("you got 0.3."); }
我們測試這兩個數的和不等于3,如果這2個數是0.25和0.05,或者是0.15和0.15,結果都是沒有問題的。如果是0.1和0.2,那么測試無法通過。因此,永遠不要測試某個特定的浮點數值。
NaNNaN的兩個特點,一是任何涉及NaN的操作(例如NaN/10)都會返回NaN,這個特點在多步計算中有可能導致問題。其次,NaN與任何值都不相等,包括NaN本身。
isNaN()函數接收一個參數,該參數可以是任何類型,而函數會幫我們確定這個參數是否“不是數值”,isNaN()在接收這個值后,會嘗試將這個值轉換為數值。而任何不能被轉換為數值的值都會導致這個函數返回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數值轉換
Number(), parseInt(),parseFloat()
Number()函數的轉換規則如下:
如果boolean值,true和false將分別被轉換為1和0
如果是數字值,只是簡單的傳入和返回
如果是null值,返回0
如果是undefined,返回NaN
操作符 一元操作符 遞增和遞減操作符執行前置遞增和遞減操作時,變量的值都是在語句被求值以前改變的。(在計算機科學領域,這種情況通常被稱為副效應)
var age = 29; var anotherAge = --age +2; alert(age); // 28 alert(anotherAge); // 30
由于前置遞增和遞減操作與執行語句的優先級相等,因此整個語句會從左至右被求值。
var num1 = 2; var num2 = 20; var num3 = --num1 + num2; // 等于21 var num4 = num1 + num2; // 等于21
后置型遞增和遞減操作符的語法不變(仍然分別是++和--),只不過要放在變量的后面而不是前面。后置遞增和遞減與前置遞增和遞減有一個非常重要的區別,即遞增和遞減操作是在包含他們的語句被求值之后才執行的。
var num1 = 2; var num2 = 20; var num3 = num1-- + num2; // 等于22 var num4 = num1 + num2; // 等于21一元加和減操作符
在對非數值應用一元加操作符時,該操作符會像Number()轉型函數一樣對這個值執行轉換。換句話說,布爾值false和true將被轉換為0和1,字符串值會被按照一組特殊的規則進行解析,而對象是先調用它們的valueOf()和toString()方法,再轉換得到的值。
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
一元減操作符只要用于表示負數,例如將1轉換成-1。
一元加和減操作符只要用于基本的算術運算,也可以像前面的示例所展示的一樣用于轉換數據類型。
加性操作符加法
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
記住:null == undefined會返回true,因為它們是類似的值;但null===undefined會返回false,因為它們是不同類型的值。
函數function sum(num1, num2){ return num1 + num2; alert("Hello world"); // 永遠不會放棄 }
這個函數會在執行完return 語句之后停止并立即退出。因此,位于return 語句之后的任何代碼都不會執行。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87584.html
摘要:一寫在前面最近重讀高級程序設計,總結下來,查漏補缺。但這種影響是單向的修改命名參數不會改變中對應的值。這是因為對象的長度是由傳入的參數個數決定的,不是由定義函數時的命名參數的個數決定的。實際改變會同步,改變也會同步 一、寫在前面 最近重讀《JavaScript高級程序設計》,總結下來,查漏補缺。 二、JS簡介 2.1 JS組成 ECMAscript:以ECMA-262為基礎的語言,由...
摘要:數據類型中有種簡單數據類型也稱為基本數據類型和。在中非空字符串,非零數字,任意對象,都被認為。而空字符串,和,,認為是。用于表示整數和浮點數。標識符由數字字母下劃線美元符組成,但首字母不能是數字。變量方法對象命名推薦駝峰法。 JavaScript語法 一.語法簡介 因為JavaScript語法和Java等語法非常類似。所以只是簡單介紹一下。 大小寫 JavaScript是大小寫敏感的語...
摘要:因此,所有在方法中定義的變量都是放在棧內存中的當我們在程序中創建一個對象時,這個對象將被保存到運行時數據區中,以便反復利用因為對象的創建成本通常較大,這個運行時數據區就是堆內存。 上一篇:《javascript高級程序設計》筆記:繼承近幾篇博客都會圍繞著圖中的知識點展開 showImg(https://segmentfault.com/img/bVY0C4?w=1330&h=618);...
摘要:操作符,會將數值改變正數變成負數負數變成正數。同時,也說明了,使用兩個邏輯非操作符和的操作結果相同。操作符得到的是余數。不相等操作符有兩種。 這篇筆記的內容對應的是《JavaScript高級程序設計(第三版)》中的第三章。 1.操作符 1-1 一元操作符 遞增和遞減操作符 遞增和遞減操作符有兩個 ++ 和 --。一元操作符使用的時候,可以前置也可以后置。由于兩個操作方式類似,先只說明 ...
摘要:寫在前面本文記錄的是我不熟悉或者我認為值得注意的地方,并不是書上知識點的概括。再就是畫圖這種。與瀏覽器沒有依賴關系。 寫在前面 本文記錄的是我不熟悉或者我認為值得注意的地方,并不是書上知識點的概括。 第1章 JavaScript簡介 JS誕生時間:1995年(好年輕...) JS誕生背景:表單數據合法性由服務端驗證的用戶體驗不好,希望能在客戶端進行驗證 JS現在用處:如果沒有...
閱讀 2787·2021-11-17 09:33
閱讀 2169·2021-09-03 10:40
閱讀 522·2019-08-29 18:45
閱讀 2956·2019-08-29 16:21
閱讀 613·2019-08-29 11:11
閱讀 3394·2019-08-26 12:00
閱讀 2947·2019-08-23 18:19
閱讀 1094·2019-08-23 12:18