首先
JavaScript 是一门“弱类型”语言,一个变量可以被重复赋值,每次都可以是不同的数据类型。所以当定义一个变量 x 时,前一秒它可能存放着数字 1 ,后一秒可能就被派去储存字符串 ‘hxhen’ 了
既然如此,那 JavaScript 中有哪几种数据类型呢?
不妨来列举一下,它们是:
- null
- undefined
- 数字(number)
- 字符串(string)
- 布尔(boolean)
- symbol
- 对象(object)
接下来逐个击破
null
先说说单纯一点的 Null,可以把它理解成 空,使用它来清空变量的值
1var name = 'Bob';
2var name = null;
undefined
字面义:未定义,声明但未赋值的变量就是 undefined
1var name;
2console.log(name); // expected output: undefined
object
“万物皆为对象”,JavaScript 作为一门面向对象的语言,也是具有这一特征的
JavaScript 提供了多个内建对象,比如 String,Date,Array 等等。对象是带有 属性contribute 和方法method 的特殊数据类型。
- 访问对象的属性
1var name = 'Bob';
2console.log(name.length); // expected output: 3 - 访问对象的方法
1var name = 'Bob';
2console.log(name.toUpperCase()); // expected output: BOB - 创建一个对象的实例
1// 可以这样创建
2student = new Object();
3student.name = 'Bob';
4student.age = 20;
5console.log(student); // expected output: {name: "Bob", age: 20}
6console.log(typeof(student)); // expected output: object
7
8// 也可以以键值对的形式创建
9student = {name: 'Bob', age: 20}; - 对象构造器
1function student(name, age)
2{
3 this.name = name;
4 this.age = age;
5}
6
7// 然后就可以通过构造器创建对象了
8var stu1 = new student('Nicol', 19);
9console.log(stu1); // expected output: student {name: "Nicol", age: 19}
10console.log(typeof(stu1)); // expected output: object - 可以往对象中添加方法
1function student(name, age)
2{
3 this.name = name;
4 this.age = age;
5
6 this.whichLanguage = whichLanguage;
7 function whichLanguage(lan)
8 {
9 console.log(lan);
10 }
11}
12
13var stu1 = new student('Nicol', 19);
14stu1.whichLanguage('Chinese'); // expected output: Chinese
number
- 数字可以是整数,小数以及科学计数法表示
1var i = 10;
2var f = 0.12;
3var e1 = 33e5; // 3300000
4var e2 = 33e-5; // 0.00033
5console.log(typeof(i)); // expected output: number - 在 JavaScript 中,所有数字都为 64 位。像其他编程语言里面的什么短整型、长整型、双精度浮点型什么的都可以先抛开了
-
精度上,普通整数最多 15 位,小数最多 17 位。和其他程序语言一样,浮点运算是不准确的
-
不同进制表示
1var y=0377; // 八进制
2var z=0xFF; // 十六进制
string
可以用单引号也可以用双引号
1s1 = 'hello';
2s2 = "world";
3s3 = String('hello'); // 得到的是基本类型 string
4s4 = new String('hello'); // 用 new 创建的是 String 对象
5
6console.log(typeof s1); // expected output: "string"
7console.log(typeof s2); // expected output: "string"
8console.log(typeof s3); // expected output: "string"
9console.log(typeof s4); // expected output: "object"
如果想要输出引号
1s1 = '"hello"';
2console.log(s1); // expected output: "hello"
3s2 = "'hello'";
4console.log(s2); // expected output: 'hello'
boolean
用 true 表示真,用 false 表示假
symbol
字面义为 标记,代表独一无二的值