数据类型:
-
基本数据类型(值类型)
-
1.
Number
:用于任何类型的数字:整数或浮点数 -
2.
String
:用于字符串:一个字符串可以包含一个或多个字符串 -
3.
Boolean
:用于true和false -
4.
null
:用于未知的值 -
5
undefined
:未定义 -
6.
Symbol
:唯一的标识符 -
7.
BigInt
:用于任意长度的整数 -
引用类型
-
普通对象
-
数组对象
-
正则对象
-
Date对象
-
Object
:用于更复杂的数据结构
"JavaScript中有八种基本的数据类型(前七种为基本的数据类型也称原始类型)而Object为复杂数据类型"
type操作符
console.log(typeof aaa);//undefined,这个变量没有定义但是不会报错,aaa此时是变量console.log(typeof 1.1);//number数字型console.log(typeof '1');//string 字符型console.log(typeof true);// 布尔类型 booleanconsole.log(typeof {});//object 是一个对象console.log(typeof function(){});// function 是一个方法,也是属于object类型的js里万物皆对象console.log(typeof null);//object(1) null 是一个空指针console.log(typeof Symbol("id"));//symbol
typeof null 的结果是object
这其实是不对的,官方也承认了这是运算符的问题,现在只是为了兼容性留了下来。是javascript语言的一个错误
**Number
JavaScript
中的变量可以保存任何数据。变量在前一刻可以是个字符串,下一刻就可以变成 number
类型:
//没有错误let message = 'hello';message = 1234;
允许这种操作的编程语言称为动态类型的编程语言。
JavaScript
中有八种基本的数据类型。
Number类型
let n = 123;n = 12.45;
number
类型代表整数和浮点数。
八进制 0~7 程序里面数字前面加0 表示八进制
let num = 011;console.log(num); //转为十进制就是9
十六进制 0-9 a-f 数字前面加0x表示十六进制
let num1 = 0x9;console.log(num);
数字型最大值:
console.log(Number.MAX_VALUE);//1.7976931348623157e+308
数字型最小值:
console.log(Number.MIN_VALUE);//5e-324
数字可以有很多操作,比如。+ - * / % 等等。
除了常规数字,还有特殊数值 也属于这种类型 :Infinity
、-Infinity
和 NaN
。
-
Infinity
无穷大 ∞。 大于任何值
我们可以通过除以 0
来得到它:
alert(1 / 0); //Infinity
isNaN()这个方法用来判断非数字 并且返回一个值,如果是数字返回的是false,如果不是数字返回的是true
console.log(isNaN(25));//falseconsole.log(isNaN("呵呵"));//true
-
isNaN
-
检测当前值是否是有效数字,返回true代表不是有效数字,返回false是有效数字
-
isNaN(12)===false
-
isNaN('1')===false
-
isNaN(true)===false
-
isNaN(false)===false
-
isNaN(null)===false
-
isNaN(undefined)===true
-
isNaN({name:9})===true
-
isNaN([11,12])===true
-
isNaN([12])===false
isNaN检测的机制
-
首先验证当前要检测的值是否为number类型的,如果不是,浏览器会默认的把值转换为数字类型
-
把非数字类型转换为数字
-
其它基本类型转换为数字,直接使用Number这个方法转换的,如果当前字符串中出现任意一个非有效数字结果则为NaN
-
当检测的值已经是数字类型,是有效数字返回false,不是返回true
NAN的比较
NaN == NaN:false NaN
和谁都不相等
检测是否为有效数字
if(isNaN(num)){
// 检测是否为有效数字}
BigInt 类型
在JavaScript中 " number"类型无法代表大于 253 (或者小于-253)的整数。
通过n附加到整数字段的末尾来创建BigInt
const bigInt = 12312312312231264645454513n;
兼容性问题
目前 Firebox
和 Chrome
已经支持 BigInt
了,但 Safari
/IE
/Edge
还没有。
String类型
JavaScript中的字符必须被括在引号里。
let str = '我画';let str1 = "你猜"let phease = `can embed ${str}`;
转义符\开头 常用的转义符:
-
\n 换行
-
\ 斜杠\
-
\' 单引号
-
\" 双引号
-
\t tab缩进
-
\b 空格
案例:
alert('越努力\n"越幸运"');
字符串长度通过字符length属性可以获取整个字符串长度
let str = 'This is a cat';console.log(str.length);//13
字符串拼接
多个字符串之间可以使用 + 进行拼接 可以加任何类型的。
let name= 'huawei';
console.log(name+'真棒!')//huawei真棒!
console.log('12'+24);//1224
console.log(12+24);//36
新增属性:反引号是 功能扩展引号。他们允许我们通过变量和表达式包装在${...}中,来将它们嵌入到字符串中。例如:
let name = "json";//嵌入一个变量alert(`helo,${name}!`);//helo,json!
${...}内的表达式 会被计算,计算结果会成为字符串的一部分。可以再${...}内放置任何东西:名为name的变量,或者1 +1的算数表达式。
需要注意的是,这仅仅在反引号内有效,其它引号不允许这种嵌入。
alert("the result is ${ 1 + 1 }");//使用双引号不会计算 ${...}
Boolean类型(逻辑类型)
boolean
类型仅包含两个值:true
和 false
通常用于存储 yes
或 no
的值:true
|yes
,false
| no
let num = 5 > 6;console.log(num); // false
null 值
特殊的 null
值不属于上述任何一种类型。
它构成一个独立的类型,只包含 null
值
let age = null;
null
仅仅代表一个无、空或值未知的特殊值
undefined
特殊值 undefined
和 null
一样自成类型。
undefined
的含义是未被赋值。
如果一个变量已被声明,那么它的值就是 undefined
:
let x;alert(x);// 弹出undefined
object 类型 和 symbol 类型
object 类型是一个特殊类型。
其它所有的数据类型都被称为原生类型,因为他们的值只包含一个单独的内容(字符串、数字或者其它)。
symbol
类型用于创建对象的唯一标识符。
typeof运算符
typeof 运算符返回参数的类型。当我们想要分别处理不同类型值得时候,或者想快速进行数据类型检验时,非常有用。
它支持两种语法形式:
1.作为运算符:typeof
x
2.函数形式:typeof(x)
对 typeof x
的调用会以字符串的形式返回数据类型:
typeof undefined // "undefined"typeof true // "boolean"typeof alert //"function"typeof "foo" //"string"typeof Symbol("id") // "symbol"typeof 0 // "number"typeof null //"object"
总结
JavaScript 中有八种基本的数据类型 (前七种为基本数据类型,也称原始类型,而object为复杂数据类型)。
-
number
用于任何类型的数字:整数或浮点数,在 ±253范围内的整数。 -
bigint
用于任意长度的整数。 -
string
用于字符串:一个字符串可以包含一个或多个字符。 -
Boolean
用于true
和false
。 -
null
用于未知的值。 -
undefined
用于未定义的值。 -
symbol
唯一的表示符。 -
object
更复杂的数据类型。