JS数据类型
数据类型
JS中有6种简单的数据类型(也称为原始类型): 1. Undefined 2. Null 3. Boolean 4. Number 5. String 6. Symbol -> ES6 中新增的很少用到 7. BigInt -> ES6新增的
typeof 操作符
typeof操作符用于判断确定任意变量的数据类型. 对一个值使用typeof操作符会返回下列字符串之一:
"undefined"表示值未定义;
"boolean"表示值为布尔值;
"string"表示值为字符串;
"number"表示值为数值;
"object"表示值为对象(而不是函数)或 null;
"function"表示值为函数;
"symbol"表示值为符号。
"bigint" 表示任意大的整数
Number 类型
ECMAScript 中最有意思的数据类型或许就是 Number 了。Number 类型使用 IEEE 754 格式表示整 数和浮点值(在某些语言中也叫双精度值)。不同的数值类型相应地也有不同的数值字面量格式。 转换为Number的几种方法 Number(s)
parseInt(s) / parseFloat(s)
s - 0
字符串(String)
String(字符串)数据类型表示零或多个 16 位 Unicode 字符序列。字符串可以使用双引号(")、 单引号(')或反引号(`)标示,因此下面的代码都是合法的:
let firstName = "John";
let lastName = 'Jacob';
let lastName = `Jingleheimerschmidt`
let firstName = '余小鱼"; // 语法错误:开头和结尾的引号必须是同一种
字符字面量 字符串数据类型包含一些字符字面量,用于表示非打印字符或者有其他用途的字符,比如:
\n 换行
\t 制表
\b 退格
\r 回车
\f 换页
\\ 反斜杠(\)
\' 单引号(') ,在字符串以单引号标识时使用,例如'余小鱼,\'yuxiaoyu.\''
\" 双引号("),在字符串以双引号标示时使用,例如"余小鱼, \"yuxiaoyu.\""
\` 反引号(`),在字符串以反引号标示时使用,例如`余小鱼, \`yuxiaoyu.\``
\uFFFF 表示对应的 Unicode 字符
\xFF 表示前 256 个 Unicode 字符
字符串的特点 Js中字符串是不可变的,意思是一旦创建,他们的值就不能变了.要修改变量中的字符串值,就必须先销毁原始的字符串,然后将包含新值的另一个字符串保存到该变量中,比如:
let name = "英文名:yuxiaoyu";
name = name + "中文名:余小鱼";
这里,变量name一开始包含字符串"英文名:yuxiaoyu".然后,name被重新定义为包含"英文名:yuxiaoyu" 和 "中文名:余小鱼" 的组合,也就是 "英文名:yuxiaoyu中文名:余小鱼".
转换字符串 最常用的几种转换方法: 1. toString(); 2. String(); 3. 要转换的变量 + ‘’; 模板字面量: JS新增了使用模板字面量定义字符串的能力.和使用单引号或双引号不同,模板字面量保留换行字符,可以跨行定义字符串
五个 falsy 值
falsy 就是相当于 false 但又不是 false 的值 分别是 undefined null 0 NaN ''
Undefined 类型
Undefined 类型只有一个值,就是特殊值 undefined。当使用 var 或 let 声明了变量但没有初始 化时,就相当于给变量赋予了 undefined 值:
let message; console.log(message == undefined); // true
Null 类型
Null 类型同样只有一个值,即特殊值 null。逻辑上讲,null 值表示一个空对象指针,这也是给 typeof 传一个 null 会返回"object"的原因:
let car = null;
console.log(typeof car);
// "object"
在定义将来要保存对象值的变量时,使用 null 来初始化,不要使用其他值。这样,只要检查 这个变量的值是不是 null 就可以知道这个变量是否在后来被重新赋予了一个对象的引用,比如:
if (car != null) { // car 是一个对象的引用 }
undefined 值是由 null 值派生而来的,因此 js 将它们定义为表面上相等,如下面的例 子所示:
console.log(null == undefined); // true
用等于操作符(==)比较 null 和 undefined 始终返回 true。 但要注意,这个操作符会为了比较 而转换它的操作数。 即使 null 和 undefined 有关系,它们的用途也是完全不一样的。 永远不必显式地将 变量值设置为 undefined。 但 null 不是这样的。任何时候,只要变量要保存对象,而当时又没有那个 对象可保存,就要用 null 来填充该变量。这样就可以保持 null 是空对象指针的语义,并进一步将其 与 undefined 区分开来。
var let const
要定义变量,可以使用 var let const操作符(注意 var 是一个关键字),后跟变量名.
let var const区别: let 跟 var 的作用差不多,但有着非常重要的区别。最明显的区别是,let 声明的范围是块作用域, 而 var 声明的范围是函数作用域。 const 的行为与 let 基本相同,唯一一个重要的区别是用它声明变量时必须同时初始化变量,且 尝试修改 const 声明的变量会导致错误。