变量及强制类型转换
2019-06-12 本文已影响0人
向着远方奔跑
- 在变量中加入字符串进行拼接,可以被同化为字符串
举例1:
var a = "1";
var b = 2;
console.log(a + b);
控制台输出:
12
举例2:
var a = 1;
var b = 2;
console.log("a" + b); //"a"就不是变量了!所以就是"a"+2 输出a2
控制台输出:
a2
-
- 、* 、/ 、%
这几个符号会自动进行隐式转换
例如:
var a = "4" + 3 - 6;
console.log(a);
输出结果:
37
(43-6)
- null 和 undefined
任何数据类型和undefined运算都是NaN(not a number);
任何值和null运算,null可看做0运算。 -
prompt()
就是专门用来弹出能够让用户输入的对话框。重要的是:用户不管输入什么,都是字符串。
数据类型转换
转为字符串类型
- 变量+"";
- 调用toString()方法;
- 使用String()函数。(String(变量))
转为数字类型
使用Number()函数
string 转 number
1、如果字符串中是纯数字,则直接转为数字;
2、如果字符串中有非数字内容,则转为 NaN;
3、如果字符串是一个空串或者是一个全是空格的字符串,则转换为0。
Boolean 转 number
- true 转为 1
- false 转为 0
null 转 number
- 结果为 0
undefined 转 number
- 结果为 NaN
parseInt():字符串 -> 整数【重要】
parseInt()是专门用来对付字符串的。
parseInt()的作用是将字符串中的有效的整数内容转为数字
例如:
parseInt("5"); //输出结果为数字 5
parseInt 具有以下特性:
- 只保留字符串最开头的数字,后面的中文自动消失
console.log(parseInt("2017在公众号上写了6篇文章")); //打印结果:2017
console.log(parseInt("2017.01在公众号上写了6篇文章")); //打印结果仍是:2017 (说明只会取整数)
console.log(parseInt("aaa2017.01在公众号上写了6篇文章")); //打印结果:NaN
- 自动带有截断小数的功能:取整,不四舍五入。
var a = parseInt(5.8) + parseInt(4.7);
console.log(a); //结果为 9
var a = parseInt(5.8 + 4.7);
console.log(a); //结果为 10
- 如果对非String使用parseInt()或parseFloat(),它会先将其转换为String然后再操作。
var a = true;
console.log(parseInt(a)); //打印结果:NaN (因为是先将a转为字符串"true",然后然后再操作)
var b = null;
console.log(parseInt(b)); //打印结果:NaN (因为是先将b转为字符串"null",然后然后再操作)
var c = undefined;
console.log(parseInt(c)); //打印结果:NaN (因为是先将b转为字符串"undefined",然后然后再操作)
var d = 168.23;
console.log(parseInt(d)); //打印结果:168 (因为是先将c转为字符串"168.23",然后然后再操作)
转为 Boolean
将其他的数据类型转换为Boolean,可以使用Boolean()函数。
-
数字 --> 布尔。除了0和NaN,其余的都是true。
-
字符串 ---> 布尔。除了空串,其余的都是true。
-
null和undefined都会转换为false。
-
对象也会转换为true。
其他进制的数字转换
-16进制的数字,以0x开头
-
8进制的数字,以0开头
-
2进制的数字,0b开头(不是所有的浏览器都支持:chrome和火狐支持,IE不支持)
比如070这个字符串,如果我调用parseInt()转成数字时,有些浏览器会当成8进制解析,有些会当成10进制解析。
所以,比较建议的做法是:可以在parseInt()中传递第二个参数,来指定数字的进制。例如:
a = "070";
a = parseInt(a,10); //转换成十进制