发表于: 2016-08-22 00:49:52

0 1940


今天完成的事情:补习基础,了解function和Function、var name=function();和function name()测试等

明天计划的事情:写js8

遇到的问题:(遇到什么困难,怎么解决的)

收获:

1、function和Function:

Function()构造函数变量作用域是全局的

(function bb(){
var aa = 2;
   (function(){
alert(aa);  //  2
   })();
})();
1
(function bb(){
var aa = 2;
   Function('alert(aa);')();  //  报错,显示aa未定义
})();
但是时遇到一个意外情况
以现在的正规写法Function无法读取到局部变量aa;
但由于我最开始写错了Function里的内容少加了引号写成了
(function bb(){
var aa = 2;
   Function(alert(aa);)();
})();
这时可以读取到局部变量aa;
而且还有一个
(function ceshi(){
var aa=1;
   Function("alert("+aa+")")();
})();

2、var name=function();和function name()

脚本会优先加载function xx(){}、变量方式声明则按顺序。如一下几段代码的区别
1、
function ceshi() {
return "a";
}
alert(ceshi());//b
function ceshi() {
return "b";
}
2、
alert(ceshi());//b
function ceshi() {
return "b";
}
var ceshi=function () {
return "a";
};
alert(ceshi());//a
3、
var ceshi=function () {
return "a";
};
alert(ceshi());
function ceshi() {
return "b";
}
alert(ceshi());
根据测试结果可知
function ceshi() {
return "b";
}
会在代码执行前就已经生成,
var ceshi=function () {
return "a";
};
则是会在function编译之后才开始执行,会覆盖掉function ceshi()





返回列表 返回列表
评论

    分享到