## 一、算术运算的注意事项
1、操作数不是数字时,Javascript会尝试将数据转换为数字,转换成功则进行算术运算,反之,则返回数字常量NaN:
~~~
var a = "123";
alert(++a); //输出124
alert(a-2); //输出122
alert("123ds" - 1); //输出NaN
~~~
2、加法运算符(+)
2.1 当两个或多个数字使用“+”运算符时,执行加法算术运算。
2.2 当单个数字和其他类型的数据使用“+”运算符时,首先会将两个表达式的值转为字符串,执行字符串运算。如alert("10"+10); //输出1010
2.3 当多个数字和其他类型的数据使用“+”运算符时,首先会从左到右根据运算符两边的数据类型进行判断,是采用算术运算还是字符串运算。如alert("10"+10+5); //输出10105;而alert(5+10+"10"); //输出1510
## 二、全等运算符
1、数字和逻辑值按值比较,值相等,则返回true。
2、字符串具有相同字符数且对应位置的字符相同,则返回TRUE。
3、对于对象、函数和数组变量则是按引用比较,若引用同一个对象,则返回TRUE。
## 三、特殊值的比较
1、常量NaN:没有具体数值,解释引擎一般将其表示为一个随机对象。
~~~
alert(NaN == NaN); //false
alert(NaN != NaN); //true
alert(NaN >= NaN); //false
alert(NaN < NaN); //false
~~~
2、null和undefined的比较:无规律,参考一下示例
~~~
alert(null == undefined); //true
alert(null != undefined); //false
alert(null >= undefined); //false
alert(null < undefined); //false
alert(null === undefined); //false
~~~
## 四:浅谈typeof、instanceof和delete运算符
1、typeof运算符用于测试表达式的类型,格式为 typeof(expression);
1.1用于特殊类型:
~~~
typeof(NaN); //number类型
typeof(Infinity); //number类型
typeof(Undefined); //undefined类型
typeof(null); //object类型
~~~
1.2用于Javascript的核心类,永远返回object:
~~~
var blog = "myblog";
var blog1 = new String("myblog");
alert(typeof blog); //输出string
alert(typeof blog1); //输出object
~~~
2、instanceof运算符:测试表达式是否是指定类的实例
~~~
var blog = "myblog";
var blog1 = new String("myblog");
alert(blog instanceof String); //false
alert(blog1 instanceof String); //true
~~~
3、delete运算符:破坏对象属性,使其初始值为undefined,执行成功返回TRUE,但是delete不能删除对象的固定属性,如数组的length属性
~~~
var user = new Object;
user.name = "zhang";
user.age = 20;
var b = delete user.name;
alert(b); //true
~~~
- 前言
- 一
- 二:变量
- 三:数据运算
- 四:流程控制
- 五:内建的全局函数
- 六:自定义函数
- 七:面向对象编程(OOP)
- 八:静态成员、静态类、枚举、重载和覆盖
- 九:原型链本质论
- 十:ECMAScript 5 增强的对象模型
- 十一:处理字符串---String类和正则表达式
- 十二:数组、多维数组和符合数组(哈希映射)
- 十三:处理日期和时间
- 十四:JavaScript内建类
- 十五:BOM之源---window对象
- 十六:BOM之源---BOM基本应用
- 十七:BOM新成就(1)--客户端存储数据(Storage实现)
- 十八:BOM新成就(1)--客户端存储数据(Web SQL DataBase实现)
- 十九--HTML5 DOM新标准---处理文档元信息和管理交互能力
- 二十---XMLHttpRequest和AJAX解决方案