У меня есть такой код:
function demo() {
this.val=5;
function() {
this.val=7;
}();
}
Теперь, когда я даю выполнить этот код в консоли Firefox или Chrome, он выдает синтаксическую ошибку. Я не понимаю, почему это ошибка, потому что я читал, что функции javascript являются объектами, поэтому, когда я вызываю анонимную функцию, внутри нее это
указывает на демонстрацию функции и должно изменить val
на 7
,поэтому, если я делаю
var x=new demo();
x.val; //should give 7
, но когда я делаю это
function demo() {
this.val=5;
var f=function() {
this.val=7;
}();
}
window.val; // gives 7
, я не понимаю, являются ли функции объектами, тогда почему this
в анонимной функции указывает на окно
, а не демо
.
Пожалуйста, объясните это.