基本数据类型有以下几种:
String 字符串、Number 数值、BigInt 大型数值、Boolean 布尔值、Null 空值、Undefined 未定义、Symbol。
String 字符串
字符串型可以是引号中的任意文本,其语法为:双引号 ""
或者单引号 ''
。
示例如下:
var a = 'abcde';
var b = '周十七';
var c = '123123';
var d = '开心开心极了';
var e = ''; //空字符串
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
console.log(typeof d);
console.log(typeof e);
控制台输出如下:
引号的注意事项
1、单引号和双引号不能混用。比如下面这样写是不可以的:
var str = 'hello"; // 报错:Uncaught SyntaxError: Invalid or unexpected token
2、同类引号不能嵌套:双引号里不能再放双引号,单引号里不能再放单引号。
3、单引号里可以嵌套双引号;双引号里可以嵌套单引号。
转义字符
在字符串中我们可以使用\
作为转义字符,当表示一些特殊符号时可以使用\
进行转义。
-
\"
表示"
双引号 -
\'
表示'
单引号 -
\\
表示\
-
\r
表示回车 -
\n
表示换行。n 的意思是 newline。 -
\t
表示缩进。t 的意思是 tab。 -
\b
表示空格。b 的意思是 blank。
举例:
var str1 = '我说:"今天\t天气真不错!"';
var str2 = '\\\\\\';
console.log(str1);
console.log(str2);
代码效果:
获取字符串的长度
字符串是由若干个字符组成的,这些字符的数量就是字符串的长度。我们可以通过字符串的 length 属性可以获取整个字符串的长度。
代码举例:
var str1 = '周十七';
var str2 = '好好学习,天天向上!';
var str3 = 'zhoushiqi';
var str4 = 'zhoushiqi589';
console.log(str1.length); //3
console.log(str2.length); //10
console.log(str3.length); //9
console.log(str4.length); //12
由此可见,字符串的 length 属性,在判断字符串的长度时,会认为:
-
一个中文算一个字符,一个英文算一个字符
-
一个标点符号(包括中文标点、英文标点)算一个字符
-
一个空格算一个字符
字符串拼接
多个字符串之间可以使用加号 +
进行拼接。
代码举例:
var str1 = '好好学习' + '天天向上';
var str2 = '周十七' + 589;
var str3 = '周十七' + true;
var str4 = '周十七' + null;
var str5 = '周十七' + undefined;
console.log(str1);
console.log(str2);
console.log(str3);
console.log(str4);
console.log(str5);
打印结果:
好好学习天天向上
周十七589
周十七true
周十七null
周十七undefined
模板字符串
在模板字符串中插入变量
var name = 'zhoushiqi';
var age = '21';
console.log('我是' + name + ',age:' + age); //传统写法
console.log(`我是${name},age:${age}`); //ES6 写法。注意语法格式
在模板字符串中插入表达式
const a = 5;
const b = 10;
// 下面这行代码,故意做了换行。
console.log(`this is ${a + b} and
not ${2 * a + b}.`);
打印结果:
this is 15 and
not 20.
模板字符串中可以换行
代码举例:
const result = {
name: 'zhoushiqi',
age: 21,
sex: '男',
};
// 模板字符串支持换行
const html = `<div>
<span>${result.name}</span>
<span>${result.age}</span>
<span>${result.sex}</span>
</div>`;
console.log(html); // 打印结果也会换行
打印结果如下:
布尔值:Boolean
布尔型有两个值:true 和 false。主要用来做逻辑判断: true 表示真,false 表示假。
布尔值直接使用就可以了,千万不要加引号。
代码:
var a = true;
console.log(typeof a);
控制台输出结果:
boolean
数值型:Number
在 JS 中所有的数值都是 Number 类型,包括整数和小数。
var a = 100; // 定义一个变量 a,并且赋值整数100
console.log(typeof a); // 输出变量 a 的类型
var b = 12.3; // 定义一个变量 b,并且赋值浮点数 12.3
console.log(typeof a);
上方代码的输出结果为:
number
number
NaN
NaN:是一个特殊的数字,表示 Not a Number,非数值。在进行数值运算时,如果得不到正常结果,就会返回 NaN。
比如:
console.log('abc' / 18); //结果是NaN
console.log('abc' * 'abcd'); //按理说,字符串相乘是没有结果的,但如果你非要让JS去算,它就一定会给你一个结果,结果是NaN。
连字符和加号的区别
键盘上的+
可能是连字符,也可能是数字的加号。如下:
console.log("我" + "爱" + "你"); //连字符,把三个独立的汉字,连接在一起了
console.log("我+爱+你"); //原样输出
console.log(1+2+3); //输出6
输出:
我爱你
我+爱+你
6
如果加号两边都是 Number 类型,此时是数字相加。否则,就是连字符(用来连接字符串)。
Null:空对象
ull 专门用来定义一个空对象。例如:let a = null
,又例如 Object.create(null)
.
如果你想定义一个变量用来保存引用类型,但是还没想好放什么内容,这个时候,可以在初始化时将其设置为 null。你可以把 null 理解为:null 虽然是一个单独的数据类型,但null 相当于是一个 object,只不过地址为空(空指针)而已。
比如:
let myObj = null;
cosole.log(typeof myObj); // 打印结果:object
undefined:未定义类型
1.声明了一个变量,但没有赋值,此时它的值就是 undefined
。举例:
let name;
console.log(name); // 打印结果:undefined
console.log(typeof name); // 打印结果:undefined
2.如果你从未声明一个变量,就去使用它,则会报错(这个大家都知道);此时,如果用 typeof
检查这个变量时,会返回 undefined
。举例:
console.log(typeof a); // undefined
console.log(a); // 打印结果:Uncaught ReferenceError: a is not defined
3.
如果一个函数没有返回值,那么,这个函数的返回值就是 undefined。
或者,也可以这样理解:在定义一个函数时,如果末尾没有 return 语句,那么,其实就是 return undefined
。
举例:
function foo() {}
console.log(foo()); // 打印结果:undefined
4.调用函数时,如果没有传参,那么,这个参数的值就是 undefined。
举例:
function foo(name) {
console.log(name);
}
foo(); // 调用函数时,未传参。执行函数后的打印结果:undefined
其他
undefined 实际上是由 null 衍生出来的,所以null == undefined
的结果为 true。
但是 null === undefined
的结果是 false。它们虽然相似,但还是有区别的,其中一个区别是,和数字运算时:
-
10 + null 结果为 10。
-
10 + undefined 结果为 NaN。
规律总结:
-
任何值和 null 运算,null 可看做 0 运算。
-
任何数据类型和 undefined 运算都是 NaN。