标签:修改 javascrip false 对象 未定义 .com ret type 函数
学习文章----汤姆大叔的博客
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) //这里已经知道是表达式,就没有必要用圆括号 };
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
标签:修改 javascrip false 对象 未定义 .com ret type 函数
原文地址:http://www.cnblogs.com/xuhaodong/p/xu1109.html