我有这样的代码:
function demo() {
this.val=5;
function() {
this.val=7;
}();
}
Run Code Online (Sandbox Code Playgroud)
现在,当我在firefox或chrome控制台中执行此代码时,它会出现语法错误.我不明白为什么这是一个错误,因为我已经读过javascript函数是对象所以当我调用匿名函数时,里面this指向函数demo并且应该更改为valto 7,所以如果我这样做
var x=new demo();
x.val; //should give 7
Run Code Online (Sandbox Code Playgroud)
但是当我这样做的时候
function demo() {
this.val=5;
var f=function() {
this.val=7;
}();
}
window.val; // gives 7
Run Code Online (Sandbox Code Playgroud)
我不明白函数是否是对象然后this匿名函数指向window和不指向的原因demo.请解释一下.