Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Google выпустила версию Chromium с поддержкой Dart «Dartium» (https://javascript.ru/forum/offtopic/25892-google-vypustila-versiyu-chromium-s-podderzhkojj-dart-dartium.html)

monolithed 20.02.2012 13:35

Цитата:

Сообщение от x-yuri
хм, а почему?

Как мне показалось, сам язык по своей сути "суррогат-пустышка". Он не несет в себе ничего нового, как по грамматике, так и по возможностям.
Ну добавили классы и какие-то нелепые абстракции (недоразвитый Java :D).
Современные языки стремятся к синтаксическому минимализму и наличию удобных модулей, а тут хз где хоть какая-то фишка?

PS: ну это мне так показлось, если кто-то глубже копнул, интересно послушать контраргументы

x-yuri 20.02.2012 14:54

я в общем-то уже высказывался (предпоследний абзац), но ты наверное читал

Mахmахmахimus 20.02.2012 16:22

x-yuri,
на http://wtfjs.com/
не понял сути. там типа вещи которые работают не как ожидается? Но я понимая как работает js ожидал все эти вещи. что в них ВТФ? типа не интуитивно?

x-yuri 20.02.2012 17:31

да уж, с js ожидать можно чего угодно...
1) ожидаемость для js-программиста != ожидаемость для программиста
2) с чего это ты вдруг ожидал -Infinity от Math.max()? Или typeof null == 'object'
но я там в первую очередь говорил не про wtf'ки...

Mахmахmахimus 20.02.2012 17:56

Цитата:

Сообщение от x-yuri
с чего это ты вдруг ожидал -Infinity от Math.max()?

потому что проверял когда-то.

Цитата:

Сообщение от x-yuri
Или typeof null == 'object'

Потому что Null это не приметивное значение, это обьект означающий пустоту.

FINoM 20.02.2012 18:06

http://wtfjs.com/2010/11/10/false-advertising Что за нах?

B@rmaley.e><e 20.02.2012 18:11

FINoM, там же сказано
Цитата:

if you try to return a primitive type from a constructor(number, string, date), it will ignore the return value and return the originally initialized object, but otherwise, the returned value overrides.

FINoM 20.02.2012 18:15

B@rmaley.e><e, это ничего не объясняет.

Nekromancer 20.02.2012 18:57

FINoM,
Это нормально.
Включим логику, приметив не может быть прототипом и по этому его нельзя вернуть из функции-конструтора.

FINoM 20.02.2012 19:01

Nekromancer, а почему есть возможность что-либо вернуть в функции-конструкторе через return?

FINoM 20.02.2012 19:02

Я к тому, что это попахивает бредом.

Gozar 20.02.2012 19:03

Цитата:

Сообщение от Mахmахmахimus (Сообщение 158680)
Потому что Null это не приметивное значение, это обьект означающий пустоту.

Ой, да ладно, с таким же успехом typeof null мог бы возвращать null.

FINoM 20.02.2012 19:23

Объясните плиз смысл void в JS. Обычно это функция, которая ничего не возвращает. Но для чего она в JS?
void();  //SyntaxError: Unexpected token )
void; //SyntaxError: Unexpected token } (???)
var void = function(){} //SyntaxError: Unexpected token void
void 0; //undefined
void 999; //undefined
void function(){}; //undefined

FINoM 20.02.2012 19:25

typeof null // object
null instanceof Object // false
Блеать!

Nekromancer 20.02.2012 19:28

void 0 ничего не возвращает. В данном случает ничего, это undefined.

Gozar 20.02.2012 19:59

Цитата:

Сообщение от FINoM (Сообщение 158704)
typeof null // object
null instanceof Object // false
Блеать!

Угу, а всё потому что должно быть как-то так:
Object instanceof null // true
но оно не так :)

FINoM 20.02.2012 20:15

Цитата:

Сообщение от Gozar
Угу, а всё потому что должно быть как-то так:
Object instanceof null // true

Чет не въехал.

monolithed 20.02.2012 20:17

Цитата:

Сообщение от Mахmахmахimus
Потому что Null это не приметивное значение, это обьект означающий пустоту.

Цитата:

The Null type has exactly one value, called null.
alert({}.toString.call(null));

Как видно null имеет тип Null , который в свою очередь относится к примитивам (4.3.2 primitive value)

Цитата:

4.3.11 null value
primitive value that represents the intentional absence of any object value.
4.3.12 Null type
type whose sole value is the null value.
Цитата:

Сообщение от FINoM
Объясните плиз смысл void в JS.

Это унарный оператор, который всегда всегда возвращает undefined.

Mахmахmахimus 20.02.2012 20:19

Цитата:

Сообщение от monolithed
Как видно null имеет тип Null , который в свою очередь относится к примитивам (4.3.2 primitive value)

странно а почему тогда у него тип обьект?

FINoM 20.02.2012 20:22

Цитата:

Сообщение от monolithed
Во первых это унарный оператор, который всегда всегда возвращает undefined.

А почему синтаксис такой, что мне обязательно нужно после него поставить что-либо? Причем не в скобки и причем обязательно.

monolithed 20.02.2012 20:29

Цитата:

Сообщение от Mахmахmахimus
странно а почему тогда у него тип обьект?

На сколько я понял изначально такое поведение было зарезервировано на будущее, а в ES4 обсуждалось как баг.
Однако такое поведение менять не стали, чтобы абстрактно различать что "тут должен возвращаться объект, а тут примитив". Для объекта null, для других значений undefined

Цитата:

Сообщение от FINoM
А почему синтаксис такой, что мне обязательно нужно после него поставить что-либо?

Я же написал, потому что это унарный оператор! А скобки можно и после return ставить или так +(1)

FINoM 20.02.2012 20:41

Цитата:

Сообщение от monolithed
Я же написал, потому что это унарный оператор!

А для чего он? Нет, серьезно, я не понимаю. Это для получения undefined?

monolithed 20.02.2012 20:45

Цитата:

Сообщение от FINoM
Это для получения undefined?

именно

Gozar 20.02.2012 20:58

Цитата:

Сообщение от FINoM (Сообщение 158716)
Чет не въехал.

alert(new Object().__proto__.__proto__); // null


alert(new Function().__proto__.__proto__.__proto__); // null

Octane 20.02.2012 21:30

Цитата:

Сообщение от FINoM
А для чего он? Нет, серьезно, я не понимаю. Это для получения undefined?

Ну не совсем бесполезно, в некоторых браузерах переменной undefined можно присвоить любое значение.


В наличие null и undefined, можно найти и положительные стороны, например, в некоторых случаях можно будет проверить, была ли инициализирована переменная:
var node;
console.log(typeof node == "undefined"); // → true
function doSomething() {
	node = document.getElementById("…");
}
doSomething();
console.log(typeof node == "undefined"); // → false

в IE еще и на unknown можно наткнуться :D

FINoM 20.02.2012 21:44

Цитата:

Сообщение от Octane
В наличие null и undefined, можно найти и положительные стороны

Это понятно. Но блин... Зачем void? Почему после void должно быть что-то? Может я тупой, объясните как-то проще.
undefined = void 'bljad'; — типа для этого?

monolithed 20.02.2012 21:53

Цитата:

Сообщение от FINoM
Это понятно. Но блин... Зачем void? Почему после void должно быть что-то? Может я тупой, объясните как-то проще.
undefined = void 'bljad'; — типа для этого?

Цитата:

Сообщение от monolithed
Я же написал, потому что это унарный оператор!

В языке многомерных выражений унарные операторы выполняют действия над одним операндом

Nekromancer 20.02.2012 21:57

FINoM,
Ну во первых, потому, что операторы в JS не бывает сами по себе. void - это оператор, ему нужно с чем то работать.
Ну и во вторых, наверно можно делать так, только не знаю зачем
var a = function(){return 1},
b = void a();

То есть принудительно заставить функцию вернуть undefined, снаружи.

П.С. Соврал конечно, бывают break и сontinue, но это из другой области, да и не совсем они сами по себе.

FINoM 20.02.2012 22:41

Цитата:

Сообщение от monolithed
В языке многомерных выражений унарные операторы выполняют действия над одним операндом

Унарные операторы выполняют полезные действия, а тут хрен его знает, зачем он.

Mахmахmахimus 21.02.2012 00:35

void нужен для того чтобы сделать какие то действия при том вернуть undefuned


например

function say(){
  return void alert('привет!');
}


это некая заглушка блокирующая отвтет от алерта.


чтобы можно было это
function say(){
  return  alert('привет!');
}

не ибаста превращая в это

function say(){
  alert('привет!');
 return undefined;
}


voidанг.
недействительный, пустой, лишенныйприл.
пустотасущ.
освобождать, аннулироватьгл.
voidedанг.
освобождать, аннулироватьгл.
voidingанг.
освобождать, аннулироватьгл.
voidsанг.
пустотасущ.
освобождать, аннулироватьгл.


это заставит алерт стрельнуть в холостую и предотвратит его ретурн.

x-yuri 21.02.2012 02:28

Цитата:

Сообщение от monolithed
чтобы абстрактно различать что "тут должен возвращаться объект, а тут примитив". Для объекта null, для других значений undefined

когда пытаешься получить несуществующее свойство объекта, не понятно чтобы бы там могло быть: примитивное значение или объект ;) а когда вообще null иожно получить

Цитата:

Сообщение от Octane
в IE еще и на unknown можно наткнуться

а как?

Цитата:

Сообщение от FINoM
Унарные операторы выполняют полезные действия, а тут хрен его знает, зачем он.

чтобы букмарклеты писать

Octane 21.02.2012 02:31

Цитата:

Сообщение от x-yuri
Цитата:

Сообщение от Octane
в IE еще и на unknown можно наткнуться

а как?

http://javascript.ru/forum/css-html-...f-unknown.html


Часовой пояс GMT +3, время: 19:57.