2014-02-07 2 views
1

Здравствуйте, У меня возникли проблемы с созданием объекта в Javascript.
я нашел что-то странное, что, когда я использовал консоль в Chrome:Проблема с созданием объекта в Javascript с ключом var

function person(){this.Name = "John";} 
var a = new person() 

Результат:undefined

Но если я это

b = new person() 

Результат:Person {Name: "John"}

есть ли разница между использованием ключевого слова var или его использованием при создании объекта в javascript?

+0

Работает хорошо здесь http://jsbin.com/nilef/1/edit. Опускание 'var' создает глобальную переменную. – elclanrs

+0

дубликат [Что является функцией ключевого слова var в ECMAScript 262 3rd Edition/Javascript 1.5?] (Http://stackoverflow.com/questions/1470488/what-is-the-function-of-the-var-keyword -in-ecmascript-262-3rd-edition-javascript). Странность исходит только из того, что отображает Chrome Console (или нет). Оператор * 'var' не имеет значения результата, а выражение * присваивания * имеет. – Bergi

ответ

3

Проверьте значение a, оно фактически совпадает с b. undefined - это результат оценки выражения var a = new person().

+0

, но я не могу получить доступ к a, когда я делаю a.Name – pion123

0

Внутри функции все необъявленные переменные являются глобальными. Только те, которые были объявлены с var, являются локальными. Так что с точки зрения охвата да оно отличается. Если вы назначаете значение внутри функции и печатаете снаружи, это объясняет вашу ситуацию.

0

Хром возвращает undefined для любого оператора, который явно не указывает return значение.

например.

var j = "Jenny from the block"; 

возвращает

неопределенными

Чтобы полностью запустить свой код попробовать

function person(){this.Name = "John";} 
var a = new person(); 
console.log(a.Name); 
+0

Вам не нужно 'return', любой оператор выражения будет достаточным. – Bergi

0

Это просто как браузер консоли работает. Он возвращает возвращаемое значение того, что вы выполняете. В этом случае ваше утверждение возвращает undefined. Проблемы, не связанные с просмотром, поскольку консоль запускается под областью окна. Бывает как в Firefox, так и в Chrome.

Console returns undefined

Смежные вопросы