У меня есть два кода javascript, которые выглядят одинаково.Разница между: и = с функцией javascript
Первый, как показано ниже, получается 2, 101, 102 в строке.
<script>
var val = 100;
var counter = {
val : 1,
func1 : function() {
this.val += 1;
alert('func1() this.val: ' + this.val);
func2 = function() {
this.val += 1;
alert('func2() this.val: ' + this.val);
func3 = function() {
this.val += 1;
alert('func3() this.val: ' + this.val);
};
func3();
};
func2();
}
};
counter.func1();
</script>
Следующий код является вторым. Результат - 2,3,4
<script>
var val = 100;
var counter = function() {
val = 1;
func1 = function() {
this.val += 1;
alert('func1() this.val: ' + this.val);
func2 = function() {
this.val += 1;
alert('func2() this.val: ' + this.val);
func3 = function() {
this.val += 1;
alert('func3() this.val: ' + this.val);
};
func3();
};
func2();
};
func1();
};
counter();
</script>
Q.Просто, на мой взгляд, эта разница исходит из знаков: =. Это правильно?
Q.Технический, это разница, связанная с лексической средой?
Q. Эти две марки должны иметь разность или закрытие?
В. Если вышеуказанные вопросы не являются причиной, то в чем причина?
Вы используете ':' для назначения свойства или переменной в объекте. И '=' назначать их в не-объекте. – choz
Вы слышали о 'scope' в javascript? –
Возможный дубликат [Что такое область переменных в JavaScript?] (Http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript) –