##数据类型转换与表达式运算符
2.1 数值类型转换为字符串类型
转换为字符串类型:
toString(radix)、 String(mix) (强制转换为字符串类型)
基本类型:number,string,boolean,null,undefined,symbol
引用类型:也称复杂数据类型 Object,function
检测基本数据类型:typeof 变量名
toString(radix)方法。 除undefined和null之外的所有类型的值都具有toString()方法, 其作用是返回对象的字符串表示。
数组常用方法?
1. push() //末尾添加
2. shift() //首部删除
3. unshift() //首部添加
4. pop() //末尾删除
5. splice() //插入,删除,替换
多数情况下,调用toString()不必传递参数。但是,在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。默认情况下,toString()方法以十进制格式返回数值的字符串表示。而通过传递参数,toString()可以输出以二进制、八进制、十六进制、乃至其他任意有效进制格式表示的字符串值。
Eg:var num=10; 基数
alert(num.toString()); //”10”
alert(num.toString(2)); //”1010”
alert(num.toString(8)); //”12”
alert(num.toString(10)); //”10”
alert(num.toString(16)); //”a”
说明:通过指定基数,toString()方法会改变输出的值。而数值10根据基数的不同,可以在输出时被转换成不同的数值格式。注意,默认的(没有参数)输出值与指定基数10时的输出值相同。
String(mix)
将任何类型的值转换为字符串, 其规则为:
如果没有toString()方法, 则调用该方法( 传递mix参数) 并返回结果。
将mix转换成原始的字符串,并返回转换后的值。
Eg**:**
var age=11;
var ageString=age.toString(); //字符串”11”
var found=true;
var value1=null;
var value2;
var foundString=found.toString(); //字符串”true”
alert(String(age)); //“11”
alert(String(value1)) //“null”返回这两个值的字面量
alert(String(value2)) //“undefined”
如果是null, 返回” null”
如果是undefined, 返回” undefined”
“”+"" — 字符串连接符 可以进行 隐式转换
在 “”+“” 情况下 只要有一个数据是字符串 就默认 + 是字符串连接符
否侧 就是 数据类型的数学运算符 + 加号 可以进行 number 类型隐式转换
2.2 字符串类型转换为数值型
显示转换: 通过手动进行类型转换, Javascript提供了以下转型函数:
• 转换为数值类型:
Number(mix)、 parseInt(string,radix)、parseFloat(string)
这三个函数可以把非数值转换为数值。第一个函数,即转型函数Number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换成数值。
Number(mix)
1.如果是布尔值, true和false分别被转换为1和0
2.如果是数字值, 返回本身。
3.如果是null, 返回0.
4.如果是undefined, 返回NaN。
5.如果是字符串, 遵循以下规则:
如果字符串中只包含数字, 则将其转换为十进制( 忽略前导0)
如果字符串中包含有效的浮点格式, 将其转换为浮点数值( 忽略前导0)
如果是空字符串, 将其转换为0
如果字符串中包含非以上格式, 则将其转换为NaN
6.如果是对象, 则调用对象的valueOf()方法, 然后依据前面的规则转换返回的值。 如果转换的结果是NaN, 则调用对象的toString()方法, 再次依照前面的规则转换返回的字符串值。
Eg:
var num1=Number(“hello word”);//NaN 因为其中不包含任何有意义的数字值。
var num1=Number(“”); //0
var num1=Number(“000011”); //11 忽略了前导的零
var num1=Number(true); //1
Number()函数转换字符串比较复杂而且不够合理
parseInt**(string,radix)**
• parseInt(string, radix)函数, 将字符串转换为整数类型的数值。它也有一定的规则:
1.忽略字符串前面的空格, 直至找到第一个非空字符 “ 12343”
2.如果第一个字符不是数字符号或者负号, 返回NaN “a12344”
3.如果第一个字符是数字, 则继续解析直至字符串解析完毕或者遇到一个非数字符号为止 “1234blue” 转换为1234,”blue”完全忽略
4.如果上步解析的结果以0开头, 则将其当作八进制来解析; 如果以0x开头, 则将其当作十六进制来解析
5.如果指定radix参数, 则以radix为基数进行解析
var numl=parseInt(“1234blue”);//1234
var numl=parseInt(“”);//NaN 因为第一个字符不是数字字符或者负号
var numl=parseInt(“0xA”);//10 (十六进制数)
var numl=parseInt(22.5);//22小数点不是有效数字字符
var numl=parseInt(“070”);//56(八进制数)
var numl=parseInt(“70”);//70(十进制数)
var numl=parseInt(“0xf”);//15(十六进制)
特点:直接查看是否符合数值模式,它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号,**parseInt()就会返回NaN。也就是说,用parseInt()转换空字符串会返回NaN。
parseFloat**(string)**
• parseFloat(string)函数, 将字符串转换为浮点数类型的数值。
• 它的规则与parseInt基本相同, 但也有点区别: 字符串中第一个小数点符号是有效的, 另外parseFloat会忽略所有前导0, 如果字符串包含一个可解析为整数的数, 则返回整数值而不是浮点数值。