数据类型:(数据类型就是字面量的类型)
JS的六种数据类型:
String 字符串
Number 数值
Boolean 布尔值
Null 空值
Undefined 未定义
Object 对象(引用数据类型)
- 基本数据类型都是单一的值,值与值之间没有任何联系
- 对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性
- 对象的分类:
①内建对象(由ES标准定义的对象,在任何ES实现中都可以使用)
②宿主对象(由JS运行环境提供的对象,目前主要由浏览器提供,如BOM,DOM)
③自定义对象(由开发人员自己创建)
下面只介绍String、Number、Object
String 字符串:
- JS中字符串需要用引号引起来
- 使用双引号或单引号都可以,但不能混用
- 嵌套使用时要交替使用
- 字符串中可以使用\作为转义字符
Number 数值:
- JS中所有的数值都是Number类型,包括整数和浮点数
- 使用typeof检查数据类型,语法:typeof a;
- JS中可以表示的最大值Number.MAX_VALUE,最小同理,如果表示的数字超过最大值,返回Infinity(正无穷)
- NaN是一个特殊的数字,表示Not A Number,使用typeof检查一个NaN也会返回number
Object 对象:
①创建对象
-
构造函数(constructor):使用new关键字调用的函数
-
构造函数是专门用来创建对象的函数
var obj=new Object();
②向obj中添加属性
-
属性:在对象中保存的值
-
向对象添加属性语法:对象.属性名=属性值;
obj.name="tom";
③读取对象中的属性
-
读取对象中的属性语法:对象.属性名
-
如果读取对象没有属性,不会报错,而会返回undefined
console.log(obj.name);
④修改对象属性
-
语法:对象.属性名=新值;
obj.name="lerry";
⑤删除对象的属性
-
语法:delete 对象.属性名
delete obj.name;
强制转换:
将其他数据类型转换为String:
方法一:
-
调用转换数据类型的toString()方法
-
该方法不会影响原变量
-
注意:null和undefined没有toString方法,调用会报错
var a=123; a=a.toString();
方法二:
-
调用String()函数
(对于number和Boolean实际上就是调用tostring()方法
但是对于null和undefined是直接转化为字符串)var a=123; a=String(a);
将其他数据类型转换为Number:
方法一:
- 使用Number()函数
①如果是纯数字字符串直接转换为数字
②如果是字符串中有非数字内容,转化为NaN
③如果字符串是空串或者空格转化为0
④布尔–>数字,true转1,false转0
⑤null–>数字,转为0
⑥undefined–>数字,转为NaN
方法二:
- parseInt()、parseFloat()专门用于字符串转换
①可以将字符串中有效地内容转换为Number
②对于非String类型,会先转化为String再操作
其他进制的数字:parseInt(a,10)中,10表示进制
将其他数据类型转换为Boolean:
- 使用Boolean()函数
①数字–>Boolean,除了0和NaN其他都是true
②字符串–>Boolean,除了空串其他都是true
③null和undefined都是false
④object也是true
运算符(操作符):
(以下主要介绍不常见知识点)
算术运算符:+ - * / %
①typeof是一个运算符,可以获得一个值得类型
②对于非Number的数字进行运算时,会先转化为数值类型。
③如果对两个字符串进行相加,相当于拼接
④任何值和字符串做加法运算,会先转化为字符串,然后拼接,其他均是转为number
(这是一种隐式类型转换,由浏览器自动完成)
⑤任何值做-*/时都会自动转化为number
var a="123";
var b,c;
b=a+1;
c=a-1;
console.log(b);
console.log(c);
控制台输出:
1231
122
一元运算符:
+正号:不会对数字产生影响
-负号:取反
对于非Number类型的数值,它会先转化为Number,然后再运算
可以使用+来将字符串转化为number
自增++:使变量自身增加1
自减–:使变量自身减1
var b;
b=2+ +"5"+1;
console.log(b);
控制台输出:8
关于++和–详细知识和c语言相同,这里不过多介绍,可以参见连接:https://editor.csdn.net/md
逻辑运算符:! && ||
非布尔值进行&&、||运算时,先将其转化为布尔值,且返回原值
&&:两个值都为true,则返回后边的一个;两个值中有false,则返回靠前的false
||:如果第一个值是true直接返回第一个值;第一个值为false直接返回第二个值
//false&&true
console.log(0&&2);
console.log(2&&0);
//false&&false
console.log(NaN&&0);
console.log(0&&NaN);
//false||true
console.log(0||2);
console.log(2||0);
//false||false
console.log(NaN||0);
console.log(0||NaN);
赋值运算符:= += -= *= /= %
=:将符号右侧的值赋值给符号左侧的变量
+=: a+=5相当于a=a+5
关系运算符:> < >= <=
- 如果关系运算符成立则返回true,如果不成立则返回false
非数值比较:
- 任何值和NaN做任何比较都是false
- 对于非数值比较,会先将其转化为数字后再比较
- 如果符号两侧都是字符串,分别比较字符串的Unicode编码
(比较字符串时是一位一位的比,如果两位一样则比较下一位,所以借他对英文排序。比较中文时没有意义)
console.log(10>null);
console.log(true>false);
console.log(10<="hello");
console.log("1"<"6");
console.log("11"<"6");
控制台输出:
Unicode编码输出:
①在字符串中用转义字符输出:\u四位编码(十六进制编码)
②在网页中使用Unicode编码,&#编码 ;(十进制编码)
相等运算符:== != === !== ==:
- undefined衍生自null,NaN不和任何值相等,包括它本身
null==0–>false
undefined ==null–>true
` NaN ==NaN–>false - JS可以通过isNaN()函数来判断一个值是否为NaN
===: 全等 - 用来判断两个值是否相等,不同于==,它不会做隐式类型转化,如果类型不同直接返回false
条件运算符: 条件表达式?语句1:语句2(三元运算符)
逗号(,)运算符:可以同时声明多个变量并赋值