1.null /undefine/数字/布尔值/字符串 无法改变的值,可做比较。 基本类型
2.使用字符串属性时,会自动生成一个临时变量。并不会改变原来的值。
var a="test"
读取:a[0]
为:"t"
设置
a[0]="r"
a //再次读取a值
"test"
o={x:1},p={x:1}
o与p也并不相等???????????这句话说法有问题:
o===p ----->是false;
另外,数组也是对象。因此 a=[ ],b=[ ] a===b ---------->也是false
//两个单独的对象永不相等。
4。对象类型被称为引用类型。区别与基本类型。
引用类型的比较,只有引用同一个基时才可以:
var a=[ ];
var b=a;
a===b ----------->true
且 b[0]=1;
则 a[0]==1 --------->true
因为是引用。
5.如果想要得到基对象的副本(对该副本操作不会影响到原对象),则必须显示复制。
var a=[1,2,3]
var b=a//-----------> false,这种是引用
var c=[ ]
for (; ;){
c[i]=a[i]
}
当改变c[i]时,不会改变a;
6.判断对象/数组是否相等时,也需要显式的比较属性与元素
7.==比较时,做了类型转换,
but:
(undefine==false)?1:0----------->0
8. x+""---------------------------->String(x)
+x----------------------------->Number(x)
!!x------------------------------>Boolean(x)
9.js 里的申明提前
var scope="global";
function f(){
console.log(scope);//输出 undefined
var scope="local";
console.log(scope);
}
相当于:
var scope="global";
function f(){
var scope;
console.log(scope);//输出 undefined
scope="local";
console.log(scope);
}
10.当申明了一个全局对象时,实际上是申明了全局对象的一个属性
没有申明,直接赋值
fakevar=8;
相当于 this.fakevar=8
11 a.shuxing 与a[xx]都可以访问属性,不同的是前者 只能的属性名只能是合法的标识符,后者可以未知名称且包含空格/标点符号/数字等
12 in 运算符希望它的左操作数是一个字符串,希望它的右操作数是一个对象。如果右侧的对象拥有一个名为左操作数的属性名,那么表达式返回true.
var data=[7,8,9]
"0" in data ?1:0 等价于 0 in data?1:0 ------------->1
0,1,2 in data 都是正确的,只是表示位置属性 data[0] data[1]
3 in data ?1:0 ---------->0
13. null undefined NaN
null===null?1:0----------->0
这三者一样
NaN 与任何包括它自己都不相等
x!==x 来判断 NaN
14.==
null== undefined?1:0---------->1
15. typeof undfined =undefined
typeof null=object
typeof NaN =Number
16. delete 删除对象属性或数组元素
删除一个对象,并同事返回true,删除一个不存在的对象,也会返回true.在严格模式下,更多的规定了不能删除的内容。
不能删除var 申请的变量,将返回false,只能删除左值,
17.for in -----------in后面必须是object
for (var p in o) 其实是每次定义一个p,p=o.x x是其属性。每次都会重新计算
所以 for(a[i++] in o) 的:a[i]=o.x,每次都会有一个计算
for in 循环并不会遍历数组的所有属性,只会枚举可以被枚举的属性
18. break ;
单独使用,只是退出最内层的循环或者 switch
js里面允许使用标签。也允许将break与标签结合起来。但是,这应该是糟粕吧,精华书里面并没有看到
19. try/catch/finally
try :定义了需要处理的异常所在的代码块
catch :紧跟try从句,try 发生异常时,执行catch 的代码逻辑,
最后是finallly,放置清理代码,不管 try 是否发生异常,finally的逻辑总是会执行。
catch,finally必须用花括号括起来。
20.debugger 在es5中正式假如js。但是只有在调试器中才会产生断点,其本身并不会启动调试器。
21. 在严格模式下,调用的函数的this(不是方法)是undefined(非严格模式下,this指向全局变量)
22.对象
属性名字里有空格/连字符/属性是保留字,必须用字符串,使用引号来表示。