Показать сообщение отдельно
  #3 (permalink)  
Старый 23.01.2016, 09:06
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сначала срабатывает выражение в скобках, а так как this === window, то this.x === window.x, следовательно мы не объявляем переменную, а присваиванием x для window. Скобки возвращают undefined, точнее, результат выполнения console.log, и этот результат (undefined) мы записываем уже в созданный ранее x.

'use strict';

x = null;

function x() {}

console.log(x);


'use strict';

x = (function() {
	this.x = null;
}.call(this), {
	foo: 'bar'
});

console.log(x.foo); //bar

Последний раз редактировалось ruslan_mart, 23.01.2016 в 09:12.
Ответить с цитированием