亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

js的基本數據類型有哪些?(轉載)

2024-04-27 15:08:45
字體:
來源:轉載
供稿:網友

js的基本數據類型有哪些?

ECMAScript中有5中簡單數據類型(也稱為基本數據類型): Undefined、Null、Boolean、Number和String。還有1中復雜的數據類型————Object,Object本質上是由一組無序的名值對組成的。

其中Undefined、Null、Boolean、Number都屬于基本類型。Object、Array和Function則屬于引用類型,String有些特殊,具體的會在下面展開分析。

變量

ECMAScript中用var關鍵字來定義變量,因為js是弱類型的,所以無法確定變量一定會存儲什么值,也就不知道變量到底會是什么類型,而且變量的類型可以隨時改變。

這就是ECMAScript是松散類型的來由,所謂松散類型就是可以用來保存任何類型的數據。

ps: es6中新增了let命令來聲明變量、const命令聲明一個只讀的常量。

let的用法類似于var,但是所聲明的變量,只在let命令所在的代碼塊內有效。

const一旦聲明,常量的值就不能改變。

關于let、const這里不做展開討論,可以參考 阮一峰 - ECMAScript 6 入門

typeof 操作符

由于js中的變量是松散類型的,所以它提供了一種檢測當前變量的數據類型的方法,也就是typeof關鍵字. 通過typeof關鍵字,對這5種數據類型會返回下面的值(以字符串形式顯示) undefined ———- 如果值未定義 Undefined

boolean ———- 如果這個值是布爾值 Boolean

string ———- 如果這個值是字符串 String

number ———- 如果這個值是數值類型 Number

object ———- 如果這個值是對象或null Object

需要注意的是typeof null返回為object,因為特殊值null被認為是一個空的對象引用。

Undefined

Undefined類型只有一個值,即特殊的undefined。在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。不過,一般建議盡量給變量初始化,但是在早期的js版本中是沒有規定undefined這個值的,所以在有些框架中為了兼容舊版瀏覽器,會給window對象添加undefined值。

window[‘undefined’] = window[‘undefined’]; //或者 window.undefined = window.undefined; Null

Null類型是第二個只有一個值的數據類型,這個特殊的值是null。從邏輯角度來看,null值表示一個空對象指針,而這也正是使用typeof操作符檢測null時會返回object的原因。

var car = null; console.log(typeof car); // “object” 如果定義的變量準備在將來用于保存對象,那么最好將該變量初始化為null而不是其他值。這樣一來,只要直接檢測null值就可以知道相應的變量是否已經保存了一個對象的引用了。 例如:

if(car != null){ //對car對象執行某些操作 } 實際上,undefined值是派生自null值的,因此ECMA-262規定對它們的相等性測試要返回true。

console.log(undefined == null); //true 盡管null和undefined有這樣的關系,但它們的用途完全不同。無論在什么情況下都沒有必要把一個變量的值顯式地設置為undefined,可是同樣的規則對null卻不適用。換句話說,只要意在保存對象的變量還沒有真正保存對象,就應該明確地讓該變量保存null值。這樣做不僅可以體現null作為空對象指針的慣例,而且也有助于進一步區分null和undefined。

Boolean

該類型只有兩個字面值:true和false。這兩個值與數字值不是一回事,因此true不一定等于1,而false也不一定等于0。

雖然Boolean類型的字面值只有兩個,但javaScript中所有類型的值都有與這兩個Boolean值等價的值。要將一個值轉換為其對應的Boolean值,可以調用類型轉換函數Boolean(),例如:

var message = 'Hello World';var messageAsBoolean = Boolean(message);

在這個例子中,字符串message被轉換成了一個Boolean值,該值被保存在messageAsBoolean變量中??梢詫θ魏螖祿愋偷闹嫡{用Boolean()函數,而且總會返回一個Boolean值。至于返回的這個值是true還是false,取決于要轉換值的數據類型及其實際值。下表給出了各種數據類型及其對象的轉換規則。

數據類型 轉換為true的值 轉換為false的值 Boolean true false String 任何非空的字符串 “”(空字符串) Number 任何非0數值(包括無窮大) 0和NAN Object 任何對象 null Undefined 不適用 undefined var message = ‘Hello World’; if(message) { alert(“Value is true”); } 運行這個示例,就會顯示一個警告框,因為字符串message被自動轉換成了對應的Boolean值(true)。由于存在這種自動執行的Boolean轉換,因此確切地知道在流控制語句中使用的是什么變量至關重要。

ps:使用!!操作符轉換布爾值 !!一般用來將后面的表達式強制轉換為布爾類型的數據(boolean),也就是只能是true或者false;

對null與undefined等其他用隱式轉換的值,用!操作符時都會產生true的結果,所以用兩個感嘆號的作用就在于將這些值轉換為“等價”的布爾值;

var foo; alert(!foo);//undifined情況下,一個感嘆號返回的是true; alert(!goo);//null情況下,一個感嘆號返回的也是true; var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test); 這段例子,演示了在undifined和null時,用一個感嘆號返回的都是true,用兩個感嘆號返回的就是false,所以兩個感嘆號的作用就在于,如果明確設置了變量的值(非null/undifined/0/”“等值),結果就會根據變量的實際值來返回,如果沒有設置,結果就會返回false。

還有其他的小技巧,可以參考這12個Javascript技巧

Number

這種類型用來表示整數和浮點數值,還有一種特殊的數值,即NaN(非數值 Not a Number)。這個數值用于表示一個本來要返回數值的操作數未返回數值的情況(這樣就不會拋出錯誤了)。例如,在其他編程語言中,任何數值除以0都會導致錯誤,從而停止代碼執行。但在JavaScript中,任何數值除以0會返回NaN,因此不會影響其他代碼的執行。

NaN本身有兩個非同尋常的特點。首先,任何涉及NaN的操作(例如NaN/10)都會返回NaN,這個特點在多步計算中有可能導致問題。其次,NaN與任何值都不相等,包括NaN本身。例如,下面的代碼會返回false。

alert(NaN == NaN); //false String

String類型用于表示由零或多個16位Unicode字符組成的字符序列,即字符串。字符串可以由單引號(‘)或雙引號(“)表示。

String類型的特殊性

string類型有些特殊,因為字符串具有可變的大小,所以顯然它不能被直接存儲在具有固定大小的變量中。由于效率的原因,我們希望JS只復制對字符串的引用,而不是字符串的內容。但是另一方面,字符串在許多方面都和基本類型的表現相似,而字符串是不可變的這一事實(即沒法改變一個字符串值的內容),因此可以將字符串看成行為與基本類型相似的不可變引用類型

Boolean、Number、String 這三個是Javascript中的基本包裝類型,也就是這三個其實是一個構造函數,他們是Function的實例,是引用類型,至于這里的String與以上說的String是同名,是因為其實上文說的String是指字符串,這里的String指的是String這個構造函數,上面那么寫,是為了更好的理解,因為Javascript是松散類型的。我們可以看下String實例化的例子:

var name = String(“jwy”); alert(typeof name);//”object” var author = “Tom”; alert(typeof name);//”string” 至于author這個會有length,substring等等這些方法,其實是String這里的方面,string只是String的一個實例,類似于C#中的String,和string,只不過這里特殊一點。

注意,typeof 變量 如果值是”string” 的話,也就是這個變量是字符串,在Javascript中,字符串是基本類型,而在C#或Java中,字符串是引用類型,但是Javascript中的String是引用類型,因為它是Javascript中定義好的基本包裝類型,在C#中,String跟string其實是一樣的。

是不是有點繞?具體的引用類型和值類型的解析看這里javascript的基本類型和引用類型

ps:內部轉正,要求開放性簡答三個問題

題目一: CSS權重是什么?

題目二:js的基本數據類型有哪些?

題目三:頁面優化的方式有哪些?

本帖只是簡要的copy了一些JavaScript高級程序設計(第三版)內容,外加了自己側重的角度,看本帖的朋友還是要看書啊,這里只是做個參考。 

By小云菜:http://www.cnblogs.com/phillyx/ github:http://github.com/phillyx 版權所有,轉載請注明出處


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
秋霞av国产精品一区| 亚洲国产小视频在线观看| 国产日韩欧美在线| 精品久久久久国产| 亚洲va欧美va国产综合久久| 国产主播精品在线| 日本精品视频在线播放| 黄色一区二区三区| 日韩欧美在线一区| 欧美日韩国产一区中文午夜| 欧美日韩免费在线| 在线电影中文日韩| zzijzzij亚洲日本成熟少妇| www.久久久久久.com| 久热在线中文字幕色999舞| 色综合久久精品亚洲国产| 亚洲欧美综合图区| 亚洲最大av在线| 欧美精品少妇videofree| 国产成人精品久久| 国产一区二区成人| 久久夜精品香蕉| 日韩视频在线免费观看| 亚洲精品99久久久久| 亚洲欧美视频在线| 亚洲高清福利视频| 国产精品九九九| 一区二区欧美日韩视频| 中文国产亚洲喷潮| 亚洲精品99久久久久中文字幕| 激情亚洲一区二区三区四区| 亚洲天堂免费视频| 国内精品久久久| 国语自产偷拍精品视频偷| 日韩精品在线免费播放| 欧美日韩国产色视频| 国产精品无av码在线观看| 日韩欧美中文免费| 中文字幕日韩精品有码视频| 亚洲女性裸体视频| 97视频免费在线看| 欧美成人免费全部观看天天性色| 国产精品久久久久久一区二区| 亚洲精品福利在线观看| 69av视频在线播放| 亚洲精品720p| 亚洲欧美在线看| 亚洲精品资源美女情侣酒店| 最近2019中文字幕一页二页| 久久久99久久精品女同性| 久久夜精品va视频免费观看| 亚洲精品不卡在线| 国产欧美日韩91| 久久精品这里热有精品| 成人综合网网址| 亚洲无限av看| 国产999精品视频| 国产精品91一区| 欧美黄色小视频| 91精品视频免费看| 91国内产香蕉| 性色av一区二区三区| 欧美另类第一页| 欧美大片免费观看| 国产大片精品免费永久看nba| 欧美精品制服第一页| 亚洲字幕在线观看| 高清亚洲成在人网站天堂| 欧美日韩久久久久| 国产精品6699| 久久精品国产成人精品| 亚洲精品美女在线观看| 亚洲欧美激情一区| 午夜精品一区二区三区在线视频| 国产精品欧美日韩久久| 亚洲区在线播放| www.国产精品一二区| 国产一区二区在线免费视频| 国产精品美女在线观看| 亚洲欧美激情在线视频| 国产综合久久久久| 亚洲电影免费观看高清完整版在线| 亚洲欧洲一区二区三区在线观看| 欧美性xxxx极品hd欧美风情| 欧美午夜精品久久久久久久| 亚洲精品日韩激情在线电影| 欧美日韩国产123| 欧美另类在线播放| 欧美人与物videos| 97精品伊人久久久大香线蕉| 中文字幕日韩av综合精品| 热99久久精品| 日韩欧美精品在线观看| 色妞在线综合亚洲欧美| 久久久久久久av| 精品久久久久久久久久久| 亚洲免费视频在线观看| 色综合伊人色综合网| 热久久视久久精品18亚洲精品| 久久精品小视频| 欧美国产日本高清在线| 日韩美女毛茸茸| 欧美综合在线第二页| 亚洲精品资源美女情侣酒店| 国产三级精品网站| 黑丝美女久久久| 欧美激情亚洲自拍| 欧美激情一区二区三区久久久| 亚洲人成绝费网站色www| 日韩电视剧在线观看免费网站| 国产精品天天狠天天看| 国产精品欧美亚洲777777| 成人激情视频免费在线| 国产丝袜精品视频| 亚洲视屏在线播放| 亚洲国产精品中文| 日本电影亚洲天堂| 精品国内产的精品视频在线观看| 成人美女av在线直播| 久久久久免费视频| 亚洲老板91色精品久久| 亚洲精品久久久久中文字幕欢迎你| 欧美午夜宅男影院在线观看| 91精品综合久久久久久五月天| 国产高清视频一区三区| 国产精品成人va在线观看| 日韩视频在线观看免费| 亚洲国产成人av在线| 夜色77av精品影院| 亚洲亚裔videos黑人hd| 日本道色综合久久影院| 欧美床上激情在线观看| 国产精品欧美日韩久久| 狠狠做深爱婷婷久久综合一区| 成人网在线免费观看| 久久久999精品| 国产精品爽黄69| 欧美激情精品久久久| 欧美成人午夜视频| 在线播放国产一区二区三区| 欧美高清在线播放| 精品综合久久久久久97| 亚洲色图在线观看| 亚洲aⅴ男人的天堂在线观看| 久久精品99久久久久久久久| 国产精品丝袜久久久久久不卡| 亚洲有声小说3d| 亚洲天堂精品在线| 日韩av网站导航| 韩日欧美一区二区| 亚洲欧美国产一本综合首页| 国产精品入口福利| 国产欧美精品va在线观看| 国产女同一区二区| 欧美亚洲另类激情另类| 欧洲亚洲女同hd| 神马久久桃色视频| 45www国产精品网站| 国产一区二区三区高清在线观看| 久久久国产精品免费| 国产精品专区第二| 亚洲成人性视频| 国产精品女视频| 亚洲影院污污.|