javascript 工作必知(四) 类型转换
string和number boolean
javascript 类型会根据赋值的进行转成相应的类型。
var str = "";
alert(typeof (str));//string
str = 5;
alert(typeof (str));//number
var sum = str + 5; //+编程两个数字相加
alert(sum);//10
这一种比较明显,一眼就可以计算出其值。但是请看下面这种转换
var sum = "7" + "5";
alert(typeof (sum)); //string
alert(sum);//75
var sum = "7" + 5;
alert(typeof (sum)); //string
alert(sum);//75
var sum = 5 + "7";
alert(typeof (sum));//string
alert(sum);
var area = "7" * "5";
alert(typeof (area)); //number
alert(area);//35 var sub = "7" - "5";
alert(typeof (sub)); //number
alert(sub);//2 var div = "7" / "5";
alert(typeof (div));//number
alert(div);//1.4
number 类型如果和string 类型"+", 将会直接number转成string
上述中“+” 比较特殊,如果是- 、* 、/ 呢;那么最终会转成什么类型呢。
var area = "7" * "a";
alert(typeof (area));//number
alert(area);//NaN var sub = "a" - "7";
alert(typeof (sub));//number
alert(sub);//NaN sub = "a" - 7;
alert(typeof (sub));//number
alert(sub);//NaN var div = "7" / "a";
alert(typeof (div));//number
alert(div);//NaN div = "a" / 7;
alert(typeof (div));//number
alert(div);//NaN
如上 - 、*、/ 是number 中算术具有的。string和number是不能进行运算的,所以其值都是NaN。类型number。
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呢
大家看下这个例子:
var c = "1";
alert(typeof(c));//string
var d = 1;
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
var a = null;
alert(typeof (a));//object var b = "hello";
var ab = a + b;
alert(typeof (ab));//string
alert(ab); //nullhello var c = 5;
var ac = a * c;
alert(typeof (ac)); //number
alert(ac);//0 if (a ) //false
{ } else
{
alert("false");
} var u; alert(a == u); //true
从给出的例子可以看出:
null 在 string中 自动转成字符串"null" , 在number中表示数字 0,在逻辑判断中相当于false,在值表示时 和undefined 一样。注意是== 而不是===。
虽然javascript 在进行比较时,== 转换了其比较类型,但是其变量类型并没有因为== 而发生改变。
javascript 工作必知(四) 类型转换的更多相关文章
- JavaScript 工作必知(九)function 说起 闭包问题
大纲 Function Caller 返回函数调用者 Callee 调用自身 作用域 闭包 function 函数格式 function getPrototyNames(o,/*optional*/ ...
- javaScript 工作必知(三) String .的方法从何而来?
String 我们知道javascript 包括:number,string,boolean,null,undefined 基本类型和Object 类型. 在我的认知中,方法属性应该是对象才可以具有的 ...
- javaScript 工作必知(六) delete in instanceof
in in 判断 左边 的字符串或者能转换成字符串的是否属于 右边 的属性. var data = { x: 1, y: 4 };//定义了直接对象 alert("x" in d ...
- javaScript 工作必知(五) eval 的使用
eval eval(parse) parse :里面跟参数字符串,我们知道执行javascript 会编译执行, 改变全局变量的值: var x = 2; //定义的全局变量 alert(x); ...
- javaScript 工作必知(十) call apply bind
call 每个func 都会继承call apply等方法. function print(mesage) { console.log(mesage); return mesage; } print ...
- javaScript 工作必知(八) 属性的特性 值、写、枚举、可配置
属性的特性 每个对象都拥有属性,属性具有哪些特性呢? 1.属性具有值. 2.属性是否是可写的. 3.是否是可枚举的. 4.是否是可配置的. " ...
- javaScript 工作必知(七) 对象继承
对象继承inherit var o = { r: 1 }; var c = function f() { }; c.prototype = o; c.r = 3; alert(o.r);//被继承的属 ...
- javaScript 工作必知(二) null 和undefined
null null 表示个“空” , 使用typeof (null) ;//Object ; 说明他是一个特殊的对象. null 类型只自己唯一个成员.他是不包含属性和方法的. undefined u ...
- javaScript 工作必知(十一) 数组常用方法实现
大纲 Array join reverse反转 sort排序 concat 拼接 slice splice 数组 //定义数组 var a = []; //使用Array定义一个数组, var a1 ...
随机推荐
- Delphi资源文件(全面分析之位图、光标、图标、AVI、JPEG、Wave)
几乎每个Windows应用程序都使用图标.图片.光标等资源.资源是程序的一部分,但是它是不可执行代码.下面我们就详细介绍资 源文件在Delphi5中建立和使用方法. 1.把资源放到Exe文件的优点 ...
- 为Delphi程序增加UAC功能
相关资料:http://bbs.csdn.net/topics/320071356# 操作方法: 在Source\VCL目录下应该有这样两个文件sample.manifest和WindowsXP.rc ...
- jQuery插件
1. Lightbox 2: Lightbox 2 是一款很酷的图片显示插件,可以在一个平滑展开的新窗口中展现出图片,而同时页面的其余部分都变成黑色背景.使用这款插件,是为了当你的的图片过大必须 ...
- HDU 1134 卡特兰数 大数乘法除法
Problem Description This is a small but ancient game. You are supposed to write down the numbers 1, ...
- 轻量级C语言实现的minixml解析库入门教程
svn上的minixml源码下载. svn co http://svn.msweet.org/mxml/tags/release-2.7/ 按照下载回来的源代码进行编译和安装.本教程只针对新手做一个 ...
- C#数据绑定中,时间为空时显示时间为原始日期问题
这个问题一般出现在用实体时,实体的时间格式没有加?号.加了之后就默认为空,没有数据时不会为原始时间了.
- new到底做了什么?
下面是一个实例化自定义的对象,我们将要对他进行分析 //定义构造函数 function A(){ this.b = 1 //在这个对象里增加一个属性 //不可以拥有返回对象的return语句 } va ...
- ORA-01652 错误中报出的不是Temp表空间的情况。
ORA-01652 unable to extend temp segment by %s in tablespace %s 注意这里的temp segment并不一定就是指临时表空间, 也可能是其 ...
- 教你如何利用初级C#语言更改银行存款!!!!
您是否对生活现状不满意? 您是否总是感叹工资太少? 您是否经常发现自己相中的物品又降价了然而自己却还是只能望洋兴叹? 没关系!让我来拯救你的钱包! 接下来进入正题: 要想更改自己的银行存款首先得找到一 ...
- dubbo+zookeeper+spring+springMVC+mybatis的使用
读前声明:由于本人水平有限,有错误或者描述不恰当的地方请指出来,勿喷!第一次写博客. 源码下载链接:http://files.cnblogs.com/files/la-tiao-jun-blog/du ...