1.parseInt(string,radix)
radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
2.== 和 ===的区别
一般使用双等来判断( == ),如果还需要类型相同那么就用三等( === )。说一下这两个的区别:== equality 等同,=== identity 恒等。==, 两边值类型不同的时候,要先进行类型转换,再比较。 ==,不做类型转换,类型不同的一定不等。 下面分别说明: 先说 === ,这个比较简单。下面的规则用来判断两个值是否 === 相等: 1、如果类型不同,就[不相等] 2、如果两个都是数值,并且是同一个值,那么[相等]。3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。 4、如果两个值都是true,或者都是false,那么[相等]。 5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。 6、如果两个值都是null,或者都是undefined,那么[相等]。 再说 == ,根据以下规则:
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
- a、如果一个是null、一个是undefined,那么[相等]。
- b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
- c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
- d、任何其他组合,都[不相等]。
3.applay()和call()
call和apply都是为了改变某个函数运行时的content即上下文而存在的,换句话说,就是为了改变函数体内部this的指向。call和apply二者的作用完全一样,只是接受参数的方式不太一样。1)applyFunction.apply(obj,args)方法能接受两个参数:a.obj:这个对象将代替Function类里this对象b.args:这个是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数(数组)。2)callcall方法与apply方法的第一个参数是一样的,只不过第二个参数是一个参数列表(需要将传递给函数的参数明确写出来,是多少参数就需要写多少参数)。在非严格模式下当我们第一个参数传递为null或undefined时,函数体内的this会指向默认的宿主对象,在浏览器中则是window。
例子:
//此时foo中的logName方法将被bar引用 ,this指向了bar
var foo = {
name:"mingming",
logName:function(){
console.log(this.name);
}
}
var bar={
name:"xiaowang"
};
foo.logName.call(bar);//xiaowang
//实现继承
function Animal(name){
this.name = name;
this.showName = function(){
console.log(this.name);
}
}
function Cat(name){
Animal.call(this, name);
}
var cat = new Cat("Black Cat");
cat.showName(); //Black Cat
4.什么是web worker
简单点说,Web Worker就是一个运行在后台的JavaScript线程,不会影响页面的响应。
当在HTML页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。web worker 是运行在后台的JavaScript,独立于其他脚本,不会影响页面的性能。我们可以继续做任何愿意做的事情:点击,选取内容等,而此时web worker在后台运行。