Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 31.01.2010, 20:43
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от B@rmaley.e><e Посмотреть сообщение
Gozar, смысл есть, если использовать let.
let поддерживается ie, opera, c каких версий?
Ответить с цитированием
  #52 (permalink)  
Старый 31.01.2010, 20:51
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Kolyaj Посмотреть сообщение
Никто так и не пишет. Просто грамматика так проще с учётом того, что if, например, можно писать как со {}, так и без них, если оператор под условием один.
я не совсем понял утверждение.
var x = 5;  
var y = 1;  
if((x==5)&&(y==1)) x+=7,y=2,z=18;
alert([x,y,z]);

Последний раз редактировалось Gozar, 31.01.2010 в 21:44.
Ответить с цитированием
  #53 (permalink)  
Старый 31.01.2010, 21:52
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gozar
я не совсем понял утверждение.
Конечно же не оператор, а statement.
Ответить с цитированием
  #54 (permalink)  
Старый 01.02.2010, 00:47
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ну вы тут и понаобсуждали

Сообщение от Niar
Запутался почему тогда
if( new String('') ) true
внимание, отвечает Дэвид Флэнаган
Сообщение от Дэвид Флэнаган
Прежде всего следует заметить, что попытка преобразования непустых объектов в логическое значение дает в результате значение true. Это справедливо для любых объектов (включая массивы и функции), даже для объектов оберток, которые представляют элементарные типы, при другом способе преобразования дающие значение false.


Сообщение от Niar
if (new String('')==false) alert('равно')
Ну а тут false то почему
а это имеет значение? Правила такие. У меня пока не было надобности это выяснить. Но если уж такое случиться - есть стандарт

p.s. конечно, интересно, почему создатели языка сделали именно такую грамматику. Но только это уже скорее не из области программирования, а из области написания компиляторов/интерпретаторов
Ответить с цитированием
  #55 (permalink)  
Старый 01.02.2010, 00:58
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Да, как уже было отмечено (Kolyaj), в данном случае получается блок, а не инициализатор объекта (кстати, {} и [] правильно называются инициализатор объекта (object initializer) и инициализатор массива (array initializer) соответственно, а не литерал объекта, литерал массива).

Сообщение от Niar
Ты не понял {l:"l"} нету ошибки
Ошибка когда значение свойства-функция или когда имя свойства-строка
Здесь получается блок, в котором находится метка (label) и дальше выражения (statements).

{x: 10}


Равносильно:

{ // блок
  x: // метка
    10; // выражение
}


Результатом вычисления этого блока будет вычисление выражения, т.е. 10.

В случае:

{"x": 10}


опять имеем блок, но с неправильной меткой - ошибка синтаксиса.

В случае:

{x: funciton () {}}


имеем блок с правильной меткой, но с ошибочным statement-ом. Это равносильно простой записи:

funciton () {} // Syntax Error


которая будет являться FunctionDeclaration (FD) без имени, что ошибка. Поэтому:

{x: funciton a() {}} // OK


Но, за исключением того, что все браузеры, кроме Firefox трактуют эту функцию, как FD, которая будет создана ещё при входе в контекст (грубо говоря - доступна до объявления); Firefox же имеет своё расширение - FunctionStatement (FS), что означает, что функции в виде FD доступны в statement-ах и будут, правильно, созданы в рантайме (при интерпретации):

alert(a); // "a" is not defined - в FF, function - в остальных
{x: funciton a() {}}
alert(a); // function - везде (уже доступна для FF)


Можно к явному виду FunctionExpression (FE) привести, тогда функция будет создана в рантайме (кроме багов в IE и именованной FE):

{x: (funciton () {})} // OK
{x: (funciton a() {})} // OK, но в IE - будет FD+FE
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 01.02.2010 в 01:08.
Ответить с цитированием
  #56 (permalink)  
Старый 01.02.2010, 11:17
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Спасибо
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #57 (permalink)  
Старый 01.02.2010, 16:34
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

А еще можно a=function(){}
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #58 (permalink)  
Старый 01.02.2010, 17:05
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

А я на сайте через winamp)
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #59 (permalink)  
Старый 01.02.2010, 19:33
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

А еще можно выучить синтаксис и не парить себе мозг почему так, а не так.
Ответить с цитированием
  #60 (permalink)  
Старый 02.02.2010, 19:56
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

var o={};
Object.prototype.p=3.14;
alert(o.p);
for(sv in o){
alert(o[sv]);
}
alert(o.propertyIsEnumerable("p"));//false?!!

Почему false выходит? Ведь данный метод возвращает true если в объекте есть свойство и если оно перечисляется циклом for\in .
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.

Последний раз редактировалось Niar, 02.02.2010 в 19:59.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск