分类:
简单数据类型(基本类型/值类型):字符串(String),数字(Number),布尔(Boolean),空(Null),未定义(undefined),symbol
复杂类型数据(引用类型):数组(Array),对象(Object),函数(function)
简单数据类型详解:
数字类型(Number)
-
整型
- 整数,包括正整数,负整数,0
-
浮点型
- 小数,例如:0.5 .6 1.0
-
NAN (会在出错的情况下出现)
NaN的特性:
- NaN和任何数字进行运算,结果都是NaN
- NaN和任何数字都不相等,即使和自身也不相等
-
Infinity(无穷大)
- 在js中 任何非0数字 除以0 得到的结果都是相应的 Infinity
-
注意:0/0 得到的结果是 NaN
-
注意:
- 在js中,一般不推荐使用浮点数据进行运算,存在bug
- 如果一定要使用浮点数进行运算,应该先将浮点数转换为整数,运算完之后,再等比例转换为浮点数 例如:(0.1*10 + 0.2*10)/10
字符串类型(string)
用引号包裹任意内容,就会形成一个字符串
例如:
- "abc"(非数字字符串)
- '123'(数字字符串)
- " "(空格字符串)
- "(空字符串)
布尔类型(Boolean)
布尔类型数据只有两个值:true 和 false
未定义类型(undefined)
在js中,声明一个变量,但没给变量赋值的时候,变量的值就是undefined
值为空类型(Null)
变量声明之后,也赋值了,但是赋的值拿不到,是一个空值
Symbol
Symbol是第六种基本数据类型,使用Symbol函数来生成一个symbol数据,
每一个Symbol是都是独一无二的。
语法: let 变量=Symbol(["注解"]);
代码示例:
<body>
<script>
function fn(){
console.log("aaaa");
}
let a = fn();
let b = fn();
console.log(a==b);//true
// 通过Symbol函数生成一个独一无二的值。
let m = Symbol();
let n = Symbol();
console.log(m == n);//false
// Symbol函数中的参数没有任何意义,只是一个注释
let x = Symbol("a");
let y = Symbol("a");
console.log(x == y);//false
</script>
</body>
只有symbol中的for方法可以生成两个相同的symbol数据
<body>
<script>
// 只有symbol中的for方法可以生成两个相同的symbol数据
let x = Symbol.for("a");
let y = Symbol.for("a");
console.log(x == y);//true
</script>
</body>
定义面向对象的私有属性和私有方法
代码示例:
面向对象:
<script>
// 面向对象
function Person(){
this.name = "张三";
this.getUserName = function(){
return name1 = "李四";
}
}
let obj = new Person();
console.log(obj.name);//张三
</script>
let与symbol结合,在外面拿不到a
<script>
// let a ,在外面拿不到a的值
function Person(){
let a = Symbol();
this.name = "张三";
this[a] = "aa";
this.getUserName = function(){
return name1 = "李四";
}
}
let obj = new Person();
console.log(obj.name);//张三
console.log(obj[a]);//报错
</script>
定义面向对象的私有属性和私有方法
<script>
// 定义面向对象的私有属性和私有方法
function Person(){
let a = Symbol();
let b = Symbol();
this.name = "张三";
this[a] = "aa";
this.getUserName = function(){
console.log(this[a]);//aa
return name1 = "李四";
}
this[b] = function(){
console.log("我是私有方法");
}
}
let obj = new Person();
console.log(obj.name);//张三
// console.log(obj[a]);//报错
obj.getUserName();
</script>
复杂数据类型详解:
数组类型(array)
-
定义:数组是一种用来存储数据的容器
-
写作:[数据1,数据2,数据3,....]
-
length属性:数组.length,获取数组长度(就是数组中包含数据的个数)。数组的索引也是从0开始
对象(object)
- 定义:对象是一种用来存储数据的容器,对象区别于数组的地方,在于对象使用属性存储数据
- {属性名1:数据 , 属性名2:数据 , ...}
- 在对象中,可以写入任意多个属性,属性值中存放的数据也可以是任意类型的
函数(function)
- 定义:用来存储代码的容器
- 写法: 函数名 (){ 函数中存储的代码 };
- 函数调用:函数名();