首页 > 编程 > JavaScript > 正文

Javascript必知必会(四)js类型转换

2019-11-20 09:45:12
字体:
来源:转载
供稿:网友

string和number boolean

javascript 类型会根据赋值的进行转成相应的类型。

var str = "";alert(typeof (str));//stringstr = ;alert(typeof (str));//numbervar sum = str + ; //+编程两个数字相加alert(sum);// 

   这一种比较明显,一眼就可以计算出其值。但是请看下面这种转换

var sum = "" + "";alert(typeof (sum)); //stringalert(sum);// var sum = "" + ;alert(typeof (sum)); //stringalert(sum);//          var sum = + "";     alert(typeof (sum));//string     alert(sum);var area = "" * "";alert(typeof (area)); //numberalert(area);//var sub = "" - "";alert(typeof (sub)); //numberalert(sub);//var div = "" / "";alert(typeof (div));//numberalert(div);//. 

  number 类型如果和string 类型"+", 将会直接number转成string

上述中“+” 比较特殊,如果是- 、* 、/ 呢;那么最终会转成什么类型呢。

var area = "" * "a";alert(typeof (area));//numberalert(area);//NaNvar sub = "a" - "";alert(typeof (sub));//numberalert(sub);//NaNsub = "a" - ;alert(typeof (sub));//numberalert(sub);//NaNvar div = "" / "a";alert(typeof (div));//numberalert(div);//NaNdiv = "a" / ;alert(typeof (div));//numberalert(div);//NaN 

  如上 - 、*、/ 是number 中算术具有的。string和number是不能进行运算的,所以其值都是NaN。类型number。

var a = true;alert(typeof(a));//booleanvar b = "true";var ab = a + b;alert(typeof (ab));//stringalert(ab); //truetruealert(a == b);//false 

   boolean 和 string ,boolean类型自动转成了字符串“true”,但是为什么a不等于b呢

大家看下这个例子:

var c = "";alert(typeof(c));//stringvar d = ;alert(typeof (d));//numberalert(c == d);//true 

  这里给出了转换的原则:(供参考)

1. 如果有一个操作数是布尔值,则在比较相等之前将其转换为数值――――false转换为0,true转换为1;
2. 如果一个操作数是字符串,另一个操作符是数值,则在比较相等之前先讲字符串转换为数值;
3. 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较。

那么在比较字符串和布尔类型是就会:

发生这样的转换: Boolean true先转成number 1,在转成字符串“1” ,在进行比较。结果肯定是 false 了。

null 和string number Boolean undefined

var a = null;alert(typeof (a));//objectvar b = "hello";var ab = a + b;alert(typeof (ab));//stringalert(ab); //nullhellovar c = ;var ac = a * c;alert(typeof (ac)); //numberalert(ac);//if (a ) //false{} else{alert("false");}var u;alert(a == u); //true 

  从给出的例子可以看出:

null 在 string中 自动转成字符串"null" , 在number中表示数字 0,在逻辑判断中相当于false,在值表示时 和undefined 一样。注意是== 而不是===。

虽然javascript 在进行比较时,== 转换了其比较类型,但是其变量类型并没有因为== 而发生改变。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表