// 定义三个全局变量
var global_var = 1;
global_novar = 2; 反面教材
(function () {
global_fromfunc = 3; 反面教材
}());
试图删除
delete global_var; false
delete global_novar; true
delete global_fromfunc; true
测试该删除
typeof global_var; "number"
typeof global_novar; "undefined"
typeof global_fromfunc; "undefined"
反例
myname = "global"; 全局变量
func() {
alert(myname); "undefined"
var myname = "local";
alert(myname); "local"
}
func();
等价于下面这段代码
myname = "global"; global variable
func() {
var myname; 等同于 -> var myname = undefined;
alert(myname); "undefined"
myname = "local";
alert(myname); "local"}
func();
for (var i in man) {
if (man.hasOwnProperty(i)) { 过滤原型属性或方法
console.log(i,":",man[i]);
}
}
反面例子:
// for-in loop without checking hasOwnProperty()
man) {
console.log(i,":"
if (Object.prototype.hasOwnProperty.call(man,i)) { 过滤
console.log(i,man[i]);
}
}
var i,hasOwn = Object.prototype.hasOwnProperty;
for (i man) {
if (hasOwn.call(man,1)"> 过滤
console.log(i,man[i]);
}
}
警告: 通不过JSLint检测
in man) 过滤
console.log(i,man[i]);
}
if (typeof Object.protoype.myMethod !== "function") {
Object.protoype.myMethod = () {
实现...
};
}
function foo(){} 声明,因为它是程序的一部分
var bar = function foo(){}; 表达式,因为它是赋值表达式的一部分
new function bar(){}; 表达式,因为它是new表达式
((){
function bar(){} 声明,因为它是函数体的一部分
})();