目录
一、强制数据转换
1. 将其他的数据类型转换为String
方法一:
调用被转换数据类型的toString()方法。该方法不会影响到原变量,它会将转换的结果返回。但是注意:null和undefined这两个值没有toString()方法,如果调用会报错。
let a = 123;
let b = a.toString()
方法二:
调用String()函数。并将被转换的数据作为参数传递给函数。调用String()函数做强制类型转换时,对于null和undefined,会直接转换为"null"和"undefined"。
let a = 123;
a = String(a);
2. 将其他数据类型转换为Number
方法一:
使用Number()函数。字符串转数字:如果是纯数字的字符串,直接转换成数字;如果有非数字内容,则转换为NaN;如果是一个空串或全是空格,转换为0。布尔转数字:true为1,false为0。Null为0,indefined为NaN。
let a = "123";
a = Number(a);
方法二:
专门用来对付字符串:parseInt()和parseFloat()
parseInt()将字符串有效的整数部分取出来,然后转换成Number
parseFloat()与parseInt()类似,不同的是它取出有效的小数
如果对非String类型使用该方法,先将其转换为String,再进行操作。
let a = "123px";
a = parseInt(a);
3. 其他进制的数字
在js中,如果需要表示16进制的数字,则需要以0x开头;
8进制,0开头;
2进制,0b开头,但不是所有浏览器都支持。
let a = "070";
// parseInt()中的第二个参数表示要转换的进制
a = parseInt(a, 10)
4. 将其他数据类型转换为Boolean
使用Boolean()函数。
数字转布尔:除了0和NaN都是true
字符串转布尔:除了空串都是true
Null和undefined都会转换成fasle
对象也会转换成true
let a = 123; // true
a = -123; // true
a = 0; // false
a = "" // false
a = "1" // true
a = Boolean(a);
二、运算符
运算符也叫操作符,通过运算符可以对一个或者多个值进行运算,并获取运算结果。
typeof 将值的类型以字符串的形式返回。
1. 算数运算符
当对非Number类型的值进行运算时,会将这些值转换成Number类型进行运算。任何数与NaN进行运算,结果都是NaN。两个字符串相加会进行拼接操作。
任何值与字符串相加,都会拼接成字符串。
可以利用这点将任意的数据类型加上一个空串来将其转换为String类型,这是一种隐式的类型转换,由浏览器自动完成,实际上也是调用的String()函数。
let a = 123;
a = a + "";
console.log(a); // "123"
let result;
result = 1 + 2 + "3"; // "33"
result = "1" + 2 + 3; // "123"
result = 100 - "1"; // 99
result = 2 * "8"; // 16
任何值做 - * / 运算时,都会自动转换为Number。
let a = "111";
a = a - 0;
console.log(a); // 111
2. 一元运算符
只需要一个操作数。对于非Number的值,先转换成Number再进行运算。
可以对其他的数据类型使用+,来将其转换为Number类型。
let a = "234";
a = +a;
console.log(a); // 234
3. 自增与自减
自增++:
通过自增可以使变量在自身基础上增加1, 对于一个变量自增以后,原变量的值会立即自增1.
自增分为前++和后++(a++和++a),无论是哪个都会使变量的值自增1,不同的是,a++的值等于原变量的值(自增前的值),++a的值等于原变量的值(自增后的值)。
let a = 1;
console.log(a++); // 1
console.log(++a); // 3
4. 逻辑运算符
! 非
对一个值进行非运算,即对一个布尔值进行取反操作。
可以为一个任意数据类型进行两次取反,将其转换为布尔值。
let a = 123;
a = !!a;
console.log(a); // true
&& 与
&&可以对符号两侧的值进行与运算并返回结果。两个值中只要有一个为false就返回false。
|| 或
||可以对符号两侧的值进行与运算并返回结果。两个值中只要有一个为true就返回true。
非布尔值的逻辑运算:
对于非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,最后返回原值。
与运算:
如果两个值都为true,则返回后边的;如果有false,则返回靠前的false。
如果第一个值为true,则返回第二个值;如果第一个值为false,则返回第一个值。
或运算:
如果第一个值为true,则返回第一个值;如果第一个值为false,则返回第二个值。
5. 赋值运算符
=
可以将符号右侧的值赋值给符号左侧的变量。
+=
a += 5等价于a = a + 5
6. 关系运算符
> < >= <=
通过关系运算符可以比较两个值之间的大小关系,如果关系成立它会返回true,如果关系不成立则返回false。
对于非数值进行比较时,会先转换成数值再进行比较。
let result;
result = 1 >= true; // true
result = 10 > null; // true
result = "11" < "5"; // true
任何值与NaN做任何比较都是false。
比较两个字符串时,比较的时字符串的字符编码;比较字符串时是一位一位进行比较,如果两位一样,则比较下一位,所以借用它对英文进行排序。
注意:在比较两个字符串型的数字时,一定一定要转型。
7. 输出unicode编码
在字符串中使用转义字符\u进行Unicode编码。
console.log("\u2620");
在网页中使用Unicode编码:
&#编码;这里的编码需要十进制。
<h1>☠</h1>
8. 相等运算符
相等运算符用来比较两个值是否相等。
使用==来做相等运算。如果值的类型不同,会自动转换成相同的类型再进行比较。
console.log("1" == 1); // true
console.log(true == "1"); // true
console.log(null == 0); // false
// undefined衍生自null,这两个值做相等判断时,会返回true
console.log(undefined == null); // true
// NaN不和任何值相等,包括本身
console.log(NaN == NaN); // false
// 使用isNaN()判断值是否为NaN
使用!=做不相等运算。
=== 全等
用来判断两个值是否全等,如果两个值类型不同,直接返回false
console.log(123 === "123"); // false
!== 不全等
用来判断两个值是否不全等,和不等类似,不会做自动类型转换。
9. 条件运算符
条件也叫三元运算符
语法:
条件表达式?语句1:语句2;
条件运算符在执行时,首先对条件表达式进行求值,如果值为true,则执行语句1,并返回执行结果;如果值为false,则执行语句2,并返回执行结果。
let a = 10;
let b = 20;
let c = 30;
let max = a > b ? a : b;
let max = max > c ? max : c;
let max = a > b ? a > c ? a : c : b > c ? b : c;
如果条件表达式的运算结果不是布尔值,则会将其转换成布尔值。
10. 运算符的优先级
, 运算符
使用 , 可以分割多个语句,一般可以在声明多个变量时使用。
优先级越高越先运算,优先级一样自左向右运算。
如果不清楚优先级,可以使用()来改变优先级。
学习的是B站尚硅谷的视频课程: