JS书写有四种错误,
1)语法错误,JS代码在预编译是就发现了错误,代码没有机会执行。
2)引用错误,通常访问一个没有定义的变量就会发生引用错误,解决办法先定义好这个变量在使用。
3)类型错误
4)范围错误
其中可以使用try catch主动抛出错误,try{放可能出现错误的代码}
catch{如果出错在这里,在这里处理}
finally{}
逻辑运算符&&,||的一些基本知识。
数字里面只有0可以转化为false,
null,NaN,空字符("" ‘’)undefined为false,
&&
1)两边条件都为true时,结果才为true
2)如果有一个为false,结果就为false
3)当第一个条件为false是,就不再判断后面的条件
4)当数值参与逻辑运算是,结果为true,那么会返回的是第二个为真的值,如果结果为false,返回第一个为假的值。
||
1)只要有一个条件为true时,结果就为true
2)当两个都为false时,结果才为false
3)当一个条件为true时,后面的条件不再判断
4)当数值参与逻辑或运算时,结果为true,会返回第一个为真的值,结果为false,会返回第二个为假的值。
JS中this不同情况下的含义
1)如果this出现在普通的函数中,this表示window如果你通过window打点调用一个函数,这个函数中的this也是window
2)事件绑定,事件处理程序,事件发生时,浏览器帮我们调用这个函数,此函数中的this表示事件源
3)在一个对象中,如果有方法(函数),如果通过这个对象调用方法,方法中的this表示这个对象
4)在立即执行函数中(IIFE)this表示window
5)前四点都是在非严格模式下,在严格模式调用一个普通函数,this表示undefined。
JS中一切数据都是对象
一个对象必定属于一个类,
一个标签就是一个对象
在声明的变量中加var的变量放到GO中是不会删除的
没有加var的变量可以删除。
对象是属性的无序集合,给一个对象添加一个属性时,也可以设置四大特征
对象中属性的四大特征,
1)configurable表示是否可以被删除
2)writable是否修改
3)enumerable是否可以输出
4)value属性值
getOwnPropertyPescriptor获取属性的特征,对象中的属性是分成两类的私有属性和公有属性。hasOwnProperty();查看属性是否是私有属性
delete只能删除私有属性,如果一个私有属性和公有属性重名了会把公有属性覆盖掉,判断一个属性是否属于某个对象用in(不管公有还是私有属性)
对象是由函数创造的,类也叫构造器,构造器本质是函数。对象中有一个属性叫coustructor,coustructor是构造器。
JS默认提供了很多类,基本数据类型也是对象
函数有四种角色
1)一个普通的函数
2)在对象中可以当成一个方法
3)类构造器
4)也可以当作对象
每一个对象上都有一个属性叫__proto__它叫隐式原型
每一个构造器上面都有一个属性叫prototype它叫原型是一个对象,这个对象叫原型对象
关于JS中的等号问题
1)=表示赋值
2)==判断相等,只判断值是否相等,不管类型是否相等
3)===判断全等,在类型要相等,值也要相等。
在JS中对象只有属性,其他什么都没有
属性名是字符串
JS是三条定律
1)一切都是对象(数组,函数,对象,变量…)
2)对象是属性的集合
3)对象是由函数创建
由于函数即是函数也是对象,所以对于函数来说,他即有prototype属性也有__proto__属性。