搜尋
首頁web前端js教程什麼是JavaScript資料型別和變數?它們之間如何轉換?

資料型別

在JavaScript中定義了下列幾種資料型別:

Number

JavaScript不區分整數和浮點數,統一用Number表示,以下都是合法的Number型別:


123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示

Infinity; // Infinity表示無限大,當數值超過了JavaScript的Number所能表示的最大值時,就表示為Infinity
計算機由於使用二進制,所以,有時候用十六進位表示整數比較方便,十六進制用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等,它們和十進位表示的數值完全一樣。
Number可以直接做四則運算,規則和數學一致:


#
1 + 2; // 3
(1 + 2) * 5 / 2; // 7.5
2 / 0; // Infinity
0 / 0; // NaN
10 % 3; // 1
10.5 % 3; // 1.5

注意%是求餘運算。

字串

字串是以單引號'或雙引號"括起來的任意文本,例如'abc',"xyz "等等。請注意,''或""本身只是一種表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c這3個字符。

布林值

布林值和布林代數的表示完全一致,一個布林值只有true、false兩種值,要嘛是true,要嘛是false,可以直接用true、 false表示布林值,也可以透過布林運算計算出來:


true; // 这是一个true值
false; // 这是一个false值
2 > 1; // 这是一个true值
2 >= 3; // 这是一个false值

&&運算是與運算,只有所有都為true,&&運算結果才是true :


true && true; // 这个&&语句计算结果为true
true && false; // 这个&&语句计算结果为false
false && true && false; // 这个&&语句计算结果为false

||運算是或運算,只要其中有一個為true,||運算結果就是true:


false || false; // 这个||语句计算结果为false
true || false; // 这个||语句计算结果为true
false || true || false; // 这个||语句计算结果为true

!運算是非運算,它是一個單目運算符,把true變成false,false變成true:


! true; // 结果为false
! false; // 结果为true
! (2 > 5); // 结果为true

布林值常用在條件判斷中,例如:


var age = 15;
if (age >= 18) {
 alert('adult');
} else {
 alert('teenager');
}

比較運算子

當我們對Number做比較時,可以透過比較運算子得到一個布林值:


#
2 > 5; // false
5 >= 2; // true
7 == 7; // true

實際上,JavaScript允許對任意資料型別做比較:


false == 0; // true
false === 0; // false

要特別注意相等運算​​子==。一種是==比較,它會自動轉換資料型別再比較,很多時候,會得到非常詭異的結果;
第二種是===比較,它不會自動轉換資料型別,如果資料型別不一致,回傳false,如果一致,再比較。不相等,包括它自己:




NaN === NaN; // false

唯一能判斷NaN的方法是透過isNaN()函數:


isNaN(NaN); // true

最後要注意浮點數的相等比較:


#

1 / 3 === (1 - 2 / 3); // false

這不是JavaScript的設計缺陷。產生誤差,因為計算機無法精確表示無限循環小數。

Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true


null和undefined


null表示一個「空」的值,它和0以及空字串''不同,0是一個數值, ''表示長度為0的字串,而null表示“空”。

在其他語言中,也有類似JavaScript的null的表示,例如Java也用null,Swift用nil,Python用None表示。但是,在JavaScript中,還有一個和null類似的undefined,它表示「未定義」。
JavaScript的設計者希望用null表示一個空的值,而undefined表示值未定義。事實證明,這並沒有什麼卵用,區分兩者的意義不大。大多數情況下,我們都應該用null。 undefined僅在判斷函數參數是否傳遞的情況下有用。

陣列

陣列是一組依序排列的集合,集合的每個值稱為元素。 JavaScript的陣列可以包括任意資料型別。例如:

[1, 2, 3.14, &#39;Hello&#39;, null, true];

上述陣列包含6個元素。數組用[]表示,元素之間用,分隔。
另一種建立陣列的方法是透過Array()函數實作:


new Array(1, 2, 3); // 创建了数组[1, 2, 3]

然而,出於程式碼的可讀性考慮,強烈建議直接使用[]。

陣列的元素可以透過索引來存取。注意,索引的起始值為0:



var arr = [1, 2, 3.14, &#39;Hello&#39;, null, true];
arr[0]; // 返回索引为0的元素,即1
arr[5]; // 返回索引为5的元素,即true
arr[6]; // 索引超出了范围,返回undefined

物件



JavaScript的物件是一組由鍵-值組成的無序集合,例如:


var person = {
 name: &#39;Bob&#39;,
 age: 20,
 tags: [&#39;js&#39;, &#39;web&#39;, &#39;mobile&#39;],
 city: &#39;Beijing&#39;,
 hasCar: true,
 zipcode: null
};

JavaScript对象的键都是字符串类型,值可以是任意数据类型。上述person对象一共定义了6个键值对,其中每个键又称为对象的属性,例如,person的name属性为'Bob',zipcode属性为null。
要获取一个对象的属性,我们用对象变量.属性名的方式:


person.name; // &#39;Bob&#39;
person.zipcode; // null

变量

变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$和_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如if、while等。申明一个变量用var语句,比如:


var a; // 申明了变量a,此时a的值为undefined
var $b = 1; // 申明了变量$b,同时给$b赋值,此时$b的值为1
var s_007 = &#39;007&#39;; // s_007是一个字符串
var Answer = true; // Answer是一个布尔值true
var t = null; // t的值是null

变量名也可以用中文,但是,请不要给自己找麻烦。
在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次,例如:


var a = 123; // a的值是整数123
a = &#39;ABC&#39;; // a变为字符串

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下:


int a = 123; // a是整数类型变量,类型用int申明
a = "ABC"; // 错误:不能把字符串赋给整型变量

和静态语言相比,动态语言更灵活,就是这个原因。
请不要把赋值语句的等号等同于数学的等号。比如下面的代码:


var x = 10;
x = x + 2;

如果从数学上理解x = x + 2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果12,再赋给变量x。由于x之前的值是10,重新赋值后,x的值变成12。

strict模式

JavaScript在设计之初,为了方便初学者学习,并不强制要求用var申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量:


i = 10; // i现在是全局变量

在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响,产生难以调试的错误结果。

使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。

为了修补JavaScript这一严重设计缺陷,ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。

启用strict模式的方法是在JavaScript代码的第一行写上:


&#39;use strict&#39;;

这是一个字符串,不支持strict模式的浏览器会把它当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式运行JavaScript。

来测试一下你窗体顶端


&#39;use strict&#39;;
// 如果浏览器支持strict模式,
// 下面的代码将报ReferenceError错误:

数据类型如何转换:

1. 轉換成數字 xxx*1.0 
轉換成字串 xxx+"" 
2. 從一個值中提取另一個類型的值,並完成轉換工作。
.提取字串中的整數:parseInt(); 
範例:parseInt("123zhang")的結果為123 
.提取字串中的浮點數:parseFloat(); 
例:parseFloat("0.55zhang")的結果為0.55 
.執行用字串表示的一段javascript程式碼:eval(); 
範例:zhang=eval("1+1")的結果zhang=2
. 轉換成字串: toString() ; 
範例:zhang=eval("1+1")的結果zhang=2 
3. 是將整個值從某一型別轉換為另一種資料型態(稱為基本資料型別轉換), 
基本資料型別轉換的三種方法: 
.轉換為字元型:String() ; 例:String(678)的結果為"678" 
.轉換為數值類型:Number() ; 例:Number("678")的結果為678 
.轉換為布林型:Boolean() ; 例:Boolean("aaa")的結果為true 

使用這些方法時,如有必要,盡量對參數和方法的執行進行判斷和異常處理操作。
有在參考文件中看到,如下關於執行效率的總結: 
在IE 下,第一種速度最快,第二種次之,第三種最差,但差距不過10萬次,差幾十百來毫秒而已。 
在FF下,第一種和第二種基本上相當,第三種最慢。 
速度差異基本上可以忽略。因為差距很小。 
但是,從程式碼的簡潔性, 第一種明顯寫法簡便,而且也易讀, 
而且不會出現第二種的 因為 某個物件沒有 toString 方法而報錯的問題。況且他始終也是最快的。 
所以,個人習慣使用第一種方式來完成資料類型的轉換 
但是,例如需要「123456abcd」來提取其中的數字,那自然當用parsetInt,和parseFloat之類的函數。 
但要注意,有時候 轉換的結果是 NaN 等,需要判斷一下。 

以上是什麼是JavaScript資料型別和變數?它們之間如何轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

如何使用Next.js(前端集成)構建多租戶SaaS應用程序如何使用Next.js(前端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript:探索網絡語言的多功能性JavaScript:探索網絡語言的多功能性Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的演變:當前的趨勢和未來前景JavaScript的演變:當前的趨勢和未來前景Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

神秘的JavaScript:它的作用以及為什麼重要神秘的JavaScript:它的作用以及為什麼重要Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python還是JavaScript更好?Python還是JavaScript更好?Apr 06, 2025 am 12:14 AM

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

如何安裝JavaScript?如何安裝JavaScript?Apr 05, 2025 am 12:16 AM

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。