Rumah hujung hadapan web tutorial js 什么是JavaScript数据类型和变量?它们之间如何转换?

什么是JavaScript数据类型和变量?它们之间如何转换?

Jul 29, 2017 pm 03:11 PM
javascript js pembolehubah

数据类型

在JavaScript中定义了以下几种数据类型:

Number

JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型:


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

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
Salin selepas log masuk

注意%是求余运算。

字符串

字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。

布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有true、false两种值,要么是true,要么是false,可以直接用true、false表示布尔值,也可以通过布尔运算计算出来:


true; // 这是一个true值
false; // 这是一个false值
2 > 1; // 这是一个true值
2 >= 3; // 这是一个false值
Salin selepas log masuk

&&运算是与运算,只有所有都为true,&&运算结果才是true:


true && true; // 这个&&语句计算结果为true
true && false; // 这个&&语句计算结果为false
false && true && false; // 这个&&语句计算结果为false
Salin selepas log masuk

||运算是或运算,只要其中有一个为true,||运算结果就是true:


false || false; // 这个||语句计算结果为false
true || false; // 这个||语句计算结果为true
false || true || false; // 这个||语句计算结果为true
Salin selepas log masuk

!运算是非运算,它是一个单目运算符,把true变成false,false变成true:


! true; // 结果为false
! false; // 结果为true
! (2 > 5); // 结果为true
Salin selepas log masuk

布尔值经常用在条件判断中,比如:


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

比较运算符

当我们对Number做比较时,可以通过比较运算符得到一个布尔值:


2 > 5; // false
5 >= 2; // true
7 == 7; // true
Salin selepas log masuk

实际上,JavaScript允许对任意数据类型做比较:


false == 0; // true
false === 0; // false
Salin selepas log masuk

要特别注意相等运算符==。JavaScript在设计时,有两种比较运算符:

第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。
另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:


NaN === NaN; // false
Salin selepas log masuk

唯一能判断NaN的方法是通过isNaN()函数:


isNaN(NaN); // true
Salin selepas log masuk

最后要注意浮点数的相等比较:


1 / 3 === (1 - 2 / 3); // false
Salin selepas log masuk

这不是JavaScript的设计缺陷。浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:


Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
Salin selepas log masuk

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];
Salin selepas log masuk

上述数组包含6个元素。数组用[]表示,元素之间用,分隔。
另一种创建数组的方法是通过Array()函数实现:


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

然而,出于代码的可读性考虑,强烈建议直接使用[]。
数组的元素可以通过索引来访问。请注意,索引的起始值为0:


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

对象

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
};
Salin selepas log masuk

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


person.name; // &#39;Bob&#39;
person.zipcode; // null
Salin selepas log masuk

变量

变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
变量在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
Salin selepas log masuk

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


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

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


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

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


var x = 10;
x = x + 2;
Salin selepas log masuk

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

strict模式

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


i = 10; // i现在是全局变量
Salin selepas log masuk

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

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

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

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


&#39;use strict&#39;;
Salin selepas log masuk

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

来测试一下你窗体顶端


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

数据类型如何转换:

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 等,需要判断一下。 

Atas ialah kandungan terperinci 什么是JavaScript数据类型和变量?它们之间如何转换?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Apr 03, 2024 am 11:55 AM

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Apakah pembolehubah contoh dalam Java Apakah pembolehubah contoh dalam Java Feb 19, 2024 pm 07:55 PM

Pembolehubah contoh dalam Java merujuk kepada pembolehubah yang ditakrifkan dalam kelas, bukan dalam kaedah atau pembina. Pembolehubah contoh juga dipanggil pembolehubah ahli Setiap contoh kelas mempunyai salinan pembolehubah contoh sendiri. Pembolehubah contoh dimulakan semasa penciptaan objek, dan keadaannya disimpan dan dikekalkan sepanjang hayat objek. Takrif pembolehubah contoh biasanya diletakkan di bahagian atas kelas dan boleh diisytiharkan dengan mana-mana pengubah suai akses, yang boleh menjadi umum, peribadi, dilindungi atau pengubah akses lalai. Ia bergantung kepada apa yang kita mahu ini

Petua Pembangunan PHP dan JS: Kuasai Kaedah Melukis Carta Lilin Stok Petua Pembangunan PHP dan JS: Kuasai Kaedah Melukis Carta Lilin Stok Dec 18, 2023 pm 03:39 PM

Dengan perkembangan pesat kewangan Internet, pelaburan saham telah menjadi pilihan semakin ramai orang. Dalam perdagangan saham, carta lilin adalah kaedah analisis teknikal yang biasa digunakan Ia boleh menunjukkan trend perubahan harga saham dan membantu pelabur membuat keputusan yang lebih tepat. Artikel ini akan memperkenalkan kemahiran pembangunan PHP dan JS, membawa pembaca memahami cara melukis carta lilin saham dan menyediakan contoh kod khusus. 1. Memahami Carta Lilin Saham Sebelum memperkenalkan cara melukis carta lilin saham, kita perlu memahami dahulu apa itu carta lilin. Carta candlestick telah dibangunkan oleh orang Jepun

Peta minda sintaks Python: pemahaman mendalam tentang struktur kod Peta minda sintaks Python: pemahaman mendalam tentang struktur kod Feb 21, 2024 am 09:00 AM

Python digunakan secara meluas dalam pelbagai bidang dengan sintaksnya yang ringkas dan mudah dibaca. Menguasai struktur asas sintaks Python adalah penting, kedua-duanya untuk meningkatkan kecekapan pengaturcaraan dan untuk mendapatkan pemahaman yang mendalam tentang cara kod tersebut berfungsi. Untuk tujuan ini, artikel ini menyediakan peta minda komprehensif yang memperincikan pelbagai aspek sintaks Python. Pembolehubah dan Jenis Data Pembolehubah ialah bekas yang digunakan untuk menyimpan data dalam Python. Peta minda menunjukkan jenis data Python biasa, termasuk integer, nombor titik terapung, rentetan, nilai Boolean dan senarai. Setiap jenis data mempunyai ciri dan kaedah operasinya sendiri. Operator Operator digunakan untuk melaksanakan pelbagai operasi pada jenis data. Peta minda merangkumi jenis operator yang berbeza dalam Python, seperti operator aritmetik, nisbah

Bagaimana untuk mendapatkan pembolehubah daripada kaedah PHP menggunakan Ajax? Bagaimana untuk mendapatkan pembolehubah daripada kaedah PHP menggunakan Ajax? Mar 09, 2024 pm 05:36 PM

Menggunakan Ajax untuk mendapatkan pembolehubah daripada kaedah PHP adalah senario biasa dalam pembangunan web Melalui Ajax, halaman boleh diperoleh secara dinamik tanpa menyegarkan data. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Ajax untuk mendapatkan pembolehubah daripada kaedah PHP, dan memberikan contoh kod khusus. Pertama, kita perlu menulis fail PHP untuk mengendalikan permintaan Ajax dan mengembalikan pembolehubah yang diperlukan. Berikut ialah kod contoh untuk fail PHP mudah getData.php:

Hubungan antara js dan vue Hubungan antara js dan vue Mar 11, 2024 pm 05:21 PM

Hubungan antara js dan vue: 1. JS sebagai asas pembangunan Web; 2. Kebangkitan Vue.js sebagai rangka kerja hadapan 3. Hubungan pelengkap antara JS dan Vue; Vue.

Pemahaman mendalam tentang const dalam bahasa C Pemahaman mendalam tentang const dalam bahasa C Feb 18, 2024 pm 12:56 PM

Penerangan terperinci dan contoh kod const dalam C Dalam bahasa C, kata kunci const digunakan untuk menentukan pemalar, yang bermaksud bahawa nilai pembolehubah tidak boleh diubah suai semasa pelaksanaan program. Kata kunci const boleh digunakan untuk mengubah suai pembolehubah, parameter fungsi dan nilai pulangan fungsi. Artikel ini akan memberikan analisis terperinci tentang penggunaan kata kunci const dalam bahasa C dan memberikan contoh kod khusus. pembolehubah diubah suai const Apabila const digunakan untuk mengubah suai pembolehubah, ini bermakna pembolehubah itu ialah pembolehubah baca sahaja dan tidak boleh diubah suai setelah ia diberikan nilai. Contohnya: berterusan

See all articles