一、typeof 和intanceof 的区别
typeof是一个一元运算符,放在运算数之前,运算数可以是任意类型,返回运算数的类型;
intanceof 是用来判断一个变量是否是某个对象的实例。
二、延长作用域链的方法:
1、try-catch语句的catch块,会创建一个新的变量。
2、with语句,将指定的对象添加到作用域链中。
var o = {href:'2222'}; var herf = "www" function buildUrl(){ var qs ="?debug=true"; with(o){ var url = href+qs; } return url; } var result= buildUrl(); alert(result)with首先查找相关对象的属性,如果没有 ,才改变变量的值。
三、callee的用法
1 这个属性只有在函数执行时才有效 2 它有一个length属性,可以用来获得形参的个数,因此可以用来比较形参和实参个数是否一致,即比较arguments.length是否等于arguments.callee.length 3 它可以用来递归匿名函数。
function factorial(num) { if(num<=1) { return 1; }else { return num*arguments.callee(num-1); //消除耦合现象; } } var trueFactorial = factorial; factorial=function (num) { return 0; }; console.log(trueFactorial(7)); console.log(factorial(7)); 四、caller 用法1 这个属性只有当函数在执行时才有用 2 如果在JavaScript程序中,函数是由顶层调用的,则返回null
function outer() { inner(); } function inner(){ alert(arguments.callee.caller) } outer();