#变量类型
- Null:Null是一个对象类型,用typeof null验证时,返回object。null被看做是一个空对象引用。所以,当定义一个变量用来保存对象是,最好将该变量初始化为null而不是其他值。
- Undefined:当使用var声明变量但未对其进行初始化时,变量值为undefined。对于未声明过的变量,使用alert()函数会弹出一个错误,但对一个为声明过的变量使用typeof检测其变量类型时,会返回undefined。Undefined和Null类型都是具有一个值的类型。Undefined值是派生自null值的,因此“null==undefined”。
- Boolean:true不一定等于1,false不一定等于0;1==true返回false,但boolean(1)==true返回true。NaN与任何值都不相等,包括NaN本身,即NaN==NaN也返回false
- Number:对于较大或较小的数值可以使用e表示法来表示,如3e10表示3乘以10的10次幂。注:浮点数的最高精度是17位小数,但其精确度元不如整数。如0.1加0.2的结果不是0.3,而是0.30000000000000004。所以在浮点数的算术计算时,可以将其适当转换为整数。
注:数值范围:在大多数浏览器中,最大数值保存在Number.MAX_VALUE中,如果某次计算超出了javascript数值范围的值,将被自动转换为Infinity值,表示负无穷或正无穷。要判断一个值是否是有穷的,使用isFinite()函数。使用isNaN()函数时,该函数会尝试将传递的参数转换成数值,任何不能转换成数值的值都会导致这个函数返回true。可以转换为数值的就返回false,如10和“10”都返回false。 parseInt()函数: 在一个变量前加个"+"号,表示对这个变量取数字,相当于对这个变量运用number()函数
- String:变量值为undefined和null的变量没有toString()方法,也就是说toString()方法对这种变量无影响,不能将其转换成字符串。但String()方法可以讲任何类型的变量转换成字符串。
- Object:
- hasOwnProperty("name"): 查询当前对象是否有某属性。
- isPrototypeOf(object): 检查传入的对象是否是另一个对象的原型。
- propertyIsEnumerable(propertyName): 检查给定的属性是否能够使用for-in语句来枚举。
- valueOf(): obj.valueOf()返回对象的字符串、数值或布尔值表示。测试了一下:就是返回变量的原始数值,是number就返回number...
- toString(): 返回对象的字符串表示。
#运算符
- 逻辑与和逻辑非操作都是短路操作符。
逻辑或操作:
如果第一个操作数是对象,则返回第一个操作数。 如果第一个操作数的求值结果为false,则返回第二个操作数。 如果两个操作数都是对象,则返回第一个操作数 如果两个操作数都是null,则返回null; 如果两个操作数都是NaN,返回NaN. 如果两个操作数都是undefined,则返回undefined.
##逻辑与操作:
如果第一个操作数是对象,则返回第二个操作数。 如果第二个操作数是对象,则只有在第一个操作数的求值结果是true时,才返回对象。 如果两个操作数都是对象,则返回第二个操作数。 如果有一个操作数都是null,则返回null; 如果有一个操作数都是NaN,返回NaN. 如果有一个操作数都是undefined,则返回undefined.
- 加性操作符
- 如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;
- 如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后将两个字符串拼接起来。
- 如果有一个操作数是对象、数值或布尔值,则调用它们的toString()方法取得相应的字符串值,然后再应用关于字符串的规则。对于undefined和null,则分别调用String()函数并取得字符串"undefined"和"null".
- 关系操作符:
- 如果两个操作数都是字符串,则比较两个字符串对应的编码值。"23"<"3" 返回true,"2"的字符编码是50,"3"的字符编码是51。
- 任何操作数与NaN比较,结果返回均为false.
- 字符串与数值比较,先将字符串转换成数值,然后再比较。
- null和undefined是相等的,但不是全等的。
- 如果两个操作数都是对象,则比较它们是不是同一个对象,如果是同一个对象则相等,返回true。否则返回false。
#语句
-
continue 当有双重循环使用conrinue时,继续执行,外部循环从变量连续,内部循环从头开始。
-
break 一般情况下,break是调出一层循环,但如果在循环前添加标签后,break不仅会退出内部循环,也会跳出外部循环。
-
with:with语句可以绑定一个对象。
with(location){ var qs = search.substring(1); //相当于qs = location.search.substring(1); }
注:大量使用with语句会导致性能下降,同时也会给调试代码造成困难。因此,在开发大学应用程序时,不建议使用with语句。
- switch switch语句在比较值时使用的是全等操作符,不会发生类型转换,如:10不等于"10"
#函数
- javascript中包含应arguments对象,可以访问传递给函数的所有参数。js传递的参数是可以任意的,编译不会出错。arguments对象在全局中是不存在的