JS权威指南笔记

保留字
之前一直以为这个没什么,一些很基本的语法肯定不会错,但是后来有几次写的代码一直不知道哪里出错,最后才发现原来是变量名出错了,注意了,尽量不要用一下的关键字来做标识符了

abstract double goto native static boolean enum implements package super byte export import private synchronized extends protected throws final interface transient const volatile arguments encodeURI Infinity RegExp ifFinite Error SyntaxError eval EvalError decodeURIComponent

这些在我看来是容易忘记的一些保留字,当然还有我还没有列出来的,比如一些定义的一些基本的函数名也尽量不要用来做标识符吧。

js所有的数字都是用浮点数值表示的。

Math对象的属性定义函数:
Math.log(100)/Math.LN10表示以10为底100的对数
Math.log(512)/Math.LN2表示以2为底512的对数
被0整除返回无穷大(Infinity)或者负无穷大(-Infinity)

二进制浮点数和四舍五入错误

var m=0.9-0.8;
var n=0.2-0.1;
document.write(m===n); //false;
因为浮点数小数位数表示个数有限,所以应尽量选择大整数来运算,在表示两个小数相减的时候应该小心。

nullundefined
null表示空值,表示数字,字符串和对象都是“无值”的,undefined说明属性或元素不存在,引用没有提供实参的函数形参也会得到undefined。
null和undefined都不包含任何属性和方法。如果想将他们赋值给变量或者属性,或者作为参数传入函数,最佳选择是null。

对象的比较是内存地址的比较,因此生成的不同的对象比较是不一样的。

var o={x:1}; var m={x:1}; o===m; //false
数组是特殊的对象,因此数组也是一样的
var a=[1,1];
var b=[1,1];;
a===b; //false

同个对象就是这样:

var a=[];
var b=a; //b是引用数组a,不是a赋值给b;
b[0]=1;
a[0]; //1;因为b引用了a,并改变了a的值;
a===b;//true;

Number类定义的toString()方法可以接收转换基数(radix)的可选参数,转换为其他进制数,默认的转换规则是十进制。
Number类数字到类型的转换有三种方法:toFixed(),toExponential(),toPrecision()这几种方法。
toFixed根据小数点后的指定位数将数字转换为字符串

var n=5.3333;
n.toFixed(2); //5.33

toExponential()使用的是指数记数法将数字转换为指数形式的字符串,其中小数点前只有一位,小数点后的位数由指定的参数决定。

var n=555.333;
n.toExponential(2); //5.55e+2

toPrecision()根据指定的有效数字位数将数字转换为字符串。如果有效数字位数小于数字整数部分的位数,则转换为指数形式。

var n=555.333;
n.toPrecision(4); //555.3
n.toPrecision(2); //5.5e+2

parseInt()可以接收第二个参数,这个参数指定数字转换的基数,合法的取值范围为2-36

逻辑或运算符:
p=p||{}; //如果向参数p中没有传入任何对象,则使用一个新创建的对象

全局eval(),eval()具有更改局部变量的能力,当用别名调用时,eval()会将其字符串当成顶层的全局代码来执行,执行的代码可能会定义新的全局变量的全局函数,或者给全局变量赋值,但却不能使用或修改主调函数中的局部变量。

var geval=eval;
var x="global",y="global";
function f(){
var x="local";
eval("x+='change';");
return x;
} //输出x=global,f()值为local change;
function t() {
var x="local";
geval("x+='change';");
return x;} //输出x=local,t()值为global change;

在switch函数中对每个case的匹配都是“===”恒等运算符比较,因此,表达式和case的匹配不会做任何的类型转换。

throw 语句
在JS中当产生运行错误或程序使用throw语句是就会显示的抛出异常,使用try/catch/finally语句来捕获异常
catch语句跟在try语句之后,当try某处发生异常时,调用catch里面的代码逻辑,finally里的语句则是怎样都会执行的。

try {
}
catch {
}
finally {
}

你可能感兴趣的:(JS权威指南笔记)