JavaScript复习3
揭秘命名函数表达式 复习(2)
JScript的BUG
在IE8-(IE6-IE8)中JScript有很多错误
这些会导致:
函数表达式的标示符泄露到外部作用域
var f = function g(){}; typeof g; // "function"
把函数表达式同时当作函数声明和函数表达式
typeof g; // "function" var f = function g(){};
JavaScript复习2
揭秘命名函数表达式
1、函数表达式和函数声明
函数声明:
function 函数名称 (参数:可选){ 函数体 }
函数表达式:
function 函数名称(可选)(参数:可选){ 函数体 }
//////////////////////////////////////////////////////////
function foo(){} // 声明,因为它是程序的一部分
var bar = function foo(){}; // 表达式,因为它是赋值表达式的一部分
new function bar(){}; // 表达式,因为它是new表达式
(function(){
function bar(){} // 声明,因为它是函数体的一部分
})();
JavaScript复习1
编写高质量JavaScript代码
最近发现JavaScript有些基本概念模糊,趁这个机会学习下 @汤姆大叔 的《深入理解JavaScript》系列,复习记录下遗忘的基础知识。在此感谢汤姆大叔!
1、全局变量
隐式全局变量和明确定义的全局变量间的不同:
通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。 无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。
// 定义三个全局变量
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"