一、数据类型转换
数据类型转换,就是把某一种数据类型转换为另一种数据类型。
1、1转换为字符串
//第一种,使用 + 拼接字符串
var a = 123 + "";
console.log(a,typeof a); //console.log()可以输出多个值,中间使用 , 分割
//第二种 toString()
var str = a.toString();
console.log(str,typeof str);
//第三种 String()
var s = String(a);
console.log(s,typeof s);
相对于第二种方法,一三属于隐式转换,二属于强制转换。
隐式转换是自动发生的,JavaScript按照既定的规则自动转换,针对于不同的数据类型,有着不同的转换规则 。
underfined 和 null 无法使用toString()方法进行转换
进制转换。 例如,a = 5 a.toString(2) 输出的结果为101
1、2转换为数值型
//方法一 :parseInt() 将字符串转换为数值型
console.log(parseInt("12")); //输出为 :12 number类型
//方法二 : parseFloat() 将字符串转换为浮点数
console.log(parseFloat("12.3")); //输出为:12.3
//方法三: Number()将字符串转换为数值型
console.log(Number('12.3')); //输出为:12.3
//方法四: 利用算术运算符实现隐式转换
console.log("12.3" - 1); //输出为: 11.3
将不同类型转换为数值型是,转换结果也不同。
在转换纯数字时,会忽略前面的0,例如:字符串为”0123“转换的结果为123。如果数字前开头有”+”会被当为正数,反之,如果前方有“ —”会被当成负数。
console.log(parseInt("0123")); //输出:123
console.log(parseInt("-12")); //输出:-12
console.log(parseInt("a12")); //输出: NaN
此外,使用parseInt()也可以实现进制之间的转换:
console.log(parseInt("F",16)); //将字符F转换为16进制,输出为 :15
1、3转换为布尔型
转换为布尔型使用Boolean(),在转换时,代表空、否定的值会被转换为false,其余值转换为true 。
console.log(Boolean(" "));
console.log(Boolean("123"));
console.log(Boolean(NaN));
console.log(Boolean(undefined));
console.log(Boolean(12));
输出结果:
二、运算符
2、1算术运算符
算术运算符用于对两个变量或值进行算术运算:
在四则运算时,我们需要注意以下几点:
- 运算规则需遵循先乘除后加减
- 在进行取模运算时,运算结果的正负取决于被模数(%左边的数)的符号。例如:(-8)%7=-1 ,8%(-7)=1
- 尽量避免使用浮点数,在JavaScript中精度问题导致运算结果出现偏差。
var a = 1 + 1; //a为 2
var age = a + 1; //age为 3
2、2 自增和自减
自增和自减分为前置运算和后置元素。
所谓的前置元素就是将元素符放到变量的前边,而后置将元素符放到变量的后边。 例如: 前置自增:++a 后置自减:a—
运算符在前置时,表达式值等于变量原值。 运算符在后置是,表达式值等于变量变更以后的值。
var a = 1,b =1;
console.log(a++); //输出为 1 ,
console.log(a); //因为前面已经操作了+1,所以输出为2
console.log(++a); //输出为 3
/*也就是说,如果+或者-的符号在前面,先执行加1或者减1;于此相反,如果+或-的符号在后面,先执行输出a,然后再执行加(减),这就是为什么我后面输出a的时候为2
*/
也就是说,如果+或者-的符号在前面,先执行加1或者减1;于此相反,如果+或-的符号在后面,先执行输出a,然后再执行加(减),这就是为什么我后面输出a的时候为2
2、3比较运算符
小于(<) 、大于(>) 、小于等于(<=)和大于等于(>=) 。这几个关系运算符用于对两个值进行比较,比较的规则与我们所用的规则一样。其返回一个布尔值。用来表示两个值之间的关系 是否成立。
JS中使用==来判断两个值是否相等,如果相等则返回 true。 使用!=来表示两个值是否不相等,如果不等则返回true。
注意:null和undefined使用==判断时是相等的。
除了==以外,JS中还提供了=== 。 ===表示全等,他和==基本一致,不过==在判断两个值时会进行自动的类型转换,而===不会。
也就是说”55”==55会返回true,而”55”===55会返回false;同样我们还有!==表示不全等,同样比较时不会自动转型。 也就是说
”55”!=55会返回false,而”55”!==55会返回true;
// 比较运算符
console.log(3 >= 5);
console.log(2 == "2");
console.log(2 === "2");
console.log(2 === 2);
console.log(2 <= 3);
输出结果为:
2、4逻辑运算符
逻辑运算符主要有三个:非、与、或。
在进行逻辑操作时如果操作数不是布尔类型则会将其转换布尔类型在进行计算。
// 逻辑运算符
console.log("逻辑运算");
var a = 2 > 1 && 4>3;
console.log(a);
var b = 1 > 2 && 4>3;
console.log(b);
var c = 2 > 8 || 4>3;
console.log(c);
var d = 2 > 8 || 4>9;
console.log(d);
var a = 2 > 8 && 4>3;
console.log(!a);
输出结果:
非运算符会对原值取反,比如原值是true使用非运算符会返回false,原值为false使用非运算符会返回true。
与运算符如果两个值都为true则返回true, 否则返回false。 非布尔值时:如果两个都为true,则返回第二个值,如果两个值中有false则返回靠前的false的值。
或运算符对布尔值进行运算时,如果两个值都为false则返回false,否则返回true。非布尔值时:如果两个都为false ,则返回第二个值,否则返回靠前true的值。
console.log(12 && 23);
console.log(12 && 0);
console.log(0 && 2);
console.log(123 || 12);
console.log(0 || 12);
console.log(12 || 0);
输出结果:
2、5赋值运算符
简单的赋值操作符由等于号 ( = ) 表示, 其作用就是把右侧的值赋给左侧的变量。
如果在等于号左边添加加减乘除等运算符, 就可以完成复合赋值操作。 +=、*=、-=、/=、%=
var a = 3;
a += 3;
console.log(a);
console.log(a -= 2);
console.log(a *= 3);
console.log(a %= 2);
运算结果:
2、6三元运算符
条件表达式 ? 表达式1 : 表达式2
先求条件表达式的值,如果为true,则返回表达式1的执行结果;如果条件表达式的结果为false,则返回表达式2的执行结果。
var age = prompt("输入年龄:");
var a = age >= 18 ? '成年' : '未成年';
console.log(a);
输出结果: