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

string和number boolean

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

rush:js;"> var str = ""; alert(typeof (str));//string str = ; alert(typeof (str));//number var sum = str + ; //+编程两个数字相加 alert(sum);//

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

rush:js;"> var sum = "" + ""; alert(typeof (sum)); //string alert(sum);// var sum = "" + ; alert(typeof (sum)); //string alert(sum);//            var sum = + "";      alert(typeof (sum));//string      alert(sum); var area = "" * ""; alert(typeof (area)); //number alert(area);// var sub = "" - ""; alert(typeof (sub)); //number alert(sub);// var div = "" / ""; alert(typeof (div));//number alert(div);//.

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

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

rush:js;"> var area = "" * "a"; alert(typeof (area));//number alert(area);//NaN var sub = "a" - ""; alert(typeof (sub));//number alert(sub);//NaN sub = "a" - ; alert(typeof (sub));//number alert(sub);//NaN var div = "" / "a"; alert(typeof (div));//number alert(div);//NaN div = "a" / ; alert(typeof (div));//number alert(div);//NaN

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

rush:js;"> var a = true; alert(typeof(a));//boolean var b = "true"; var ab = a + b; alert(typeof (ab));//string alert(ab); //truetrue alert(a == b);//false

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

大家看下这个例子:

rush:js;"> var c = ""; alert(typeof(c));//string var d = ; alert(typeof (d));//number alert(c == d);//true

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

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

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

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

null 和string number Boolean undefined

rush:js;"> var a = null; alert(typeof (a));//object var b = "hello"; var ab = a + b; alert(typeof (ab));//string alert(ab); //nullhello var c = ; var ac = a * c; alert(typeof (ac)); //number alert(ac);// if (a ) //false { } else { alert("false"); } var u; alert(a == u); //true

  从给出的例子可以看出:

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

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...