首页 > 代码库 > 函数表达式和函数声明
函数表达式和函数声明
学习文章----汤姆大叔的博客
总结笔记
函数声明:
1.函数声明必须要有名称
2.位置只能在全局上下文和函数体内,不能出现在代码块(if)中
函数表达式:
特点:不会影响上下文的全局对象VO
var foo = {}; (function initialize() { var x = 10; foo.bar = function () { alert(x); }; })(); foo.bar(); // 10; alert(x); // "x" 未定义
1.表达式可以没有名称,表达式不能以function开头
2.当表达式不在规定位置时,需要用分组操作符圆括号强制转化为表达式。如果解析器知道它是一个表达式,就没必要用圆括号。
var foo = { bar: function (x) { return x % 2 != 0 ? ‘yes‘ : ‘no‘; }(1) //这里已经知道是表达式,就没有必要用圆括号 };
函数表达式在IE的JScript中的bug
1.函数表达式在变量对象中可见
2.①var foo = function bar(){}; //创建了两个对象foo和bar,
foo === bar; //false,但两个对象的输出结果是一样的
修改foo的属性值,不会影响bar对象
var foo = function bar() { alert(‘foo‘); }; alert(typeof bar); // "function", // 有趣的是 alert(foo === bar); // false! foo.x = 10; alert(bar.x); // 未定义 // 但执行的时候结果一样 foo(); // "foo" bar(); // "foo"
②但是,如果将函数表达式bar单独描述,再赋值给foo,就符合我们的逻辑了
(function bar() {}); var foo = bar;//将bar的引用赋值给foo alert(foo === bar); // true foo.x = 10; alert(bar.x); // 10
函数表达式和函数声明
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。