Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
> { key: "value" }
"value"
Object > p = { key: "value" }
Object {key: "value"}
> p.key
"value"
> var p = {}
undefined
> p
Object {}
{key: "value"}
без присваивания.> p = {key: 'value'};
Object {key: "value"}
> p
Object {key: "value"}
> {key: 'value'}
"value"
> {'value'}
"value"
> {key1: 'value1', key2: 'value2'}
SyntaxError: Unexpected token :
{label: if(true){console.log("it's a label!")}}
{} + []
+ []
+ Number([])
Number([]) в свою очередь вызывает toString у массива (потому что это не примитив) что вернет пустую строку, получаем + Number('')
а Number('') это 0> typeof {label: 3+3}
"object"
> p = {label: 3+3}
Object {label: 6}
> p
Object {label: 6}
> p.label
6
typeof на {} говорит что это обьект.> typeof {}
"object"
{
label1:
"value"
}
{} — Blocklabel1 — Labelled Statements"value" — String LiteralsObject{ // block
console.log('before label');
label1: // label
console.log('after label');
for (var n = 0; n < 10; n++) {
console.log(n);
}
}
var p = {
label1: "value"
};
{} — В данном случае Object Initialiser.if (true)
console.log('action');
for (var n=0; n<10; n++)
console.log(n);
if (true) {
console.log('action 1');
console.log('action 2');
console.log('action 3');
}
for (var n=0; n<10; n++) {
console.log(n);
console.log('some action');
}
var a = 3;
var b = 4;
{
a = 50;
b = 50;
}
alert(a + b); //alerts 100
(function () {
"use strict";
let a = 123;
{
let a = 42;
console.log(a); // 42
}
console.log(a); // 123
})();
var a = 3;
var b = 4;
{
var a = 50;
var b = 50;
var c1 = a + b
console.log(c1); // 100
}
var c2 = a + b
console.log(c2); // 100
console.log явно прописано //100 так что я явно проверял что запускал, просто вы не внимательно читаете.let не работает в нынешней консоле хрома и появится только в JavaScript 1.7.{key: "value"}typeof {key: "value"} говорит что это объект.let не работает в нынешней консоле хрома и появится только в JavaScript 1.7.
Детство кончилось. Пришло время прекращать шалить!
class Point {
num x, y;
Point(this.x, this.y);
operator +(Point point) => new Point(x + point.x, y + point.y);
}
При плюсовании двух массивов, я ожидал бы конкатенации
Вы же не жалуетесь на плюс для конкатенации строк
> [] + {}
"[object Object]"
> {} + []
непродуманный и сложный для пониманияДаже авторитетные JavaScript-евангелисты типа Дугласа Крокфорда и другие, постоянно говорят о принципиальных архитектурных просчетах в этом языке. Не было бы этих просчетов, не возникали бы постоянные попытки исправить эти дефекты разного рода синтаксическим сахаром типа CoffeeScript, не появлялись бы библиотеки упрощающие тоже ооп-наследование.
нет плохих и хороших языковКитайский язык сложнее освоить чем английский. Он сложнее английского, и менее удобен. Но в связи с тем, что он очень распространен и требуется в конкретных областях, его приходится учить.
А начать писать <что-нибудь> на JS все же намного проще, чем на многих других языках.Если только вы говорите о приложениях типа Hello Word или о простеньком управлении веб-страничкой. А если речь идет о каком нибудь приложении состоящим из хотя бы нескольких 10-20 классов и сложными структурами данных, то я абсолютно не согласен.
Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined.
Проблема с этим языком в том, что он ворвался на рынок слишком быстро и так же слишком быстро был стандартизирован. Так что большинство его недостатков связаны не с текущей реализацией, а находятся в спецификации. Стандарт указывает делать это неправильно. А это просто ужасно. Но ситуация именно такова. В 1999 году развитие этого языка замерло, все должны были его забыть, и он должен был умереть. Но вместо этого совершенно случайно возник Ajax, и теперь JavaScript — самый важный язык программирования в мире.
И теперь мы думаем, что должны его как-то исправлять. Это нужно было сделать еще в 2000-м, но тогда этого никто не сделал, поскольку на него тогда никто не обращал внимания. Теперь же это сделать очень сложно.
А если посмотреть на прототипный механизм ооп-наследования в JavaScript. Я постоянно сталкиваюсь с тем, что программисты не могут до конца понять и прочувствовать как он работает, или используют его неправильно. Вот в языках типа Java или PHP, наследование очень простое и понятное, все его прекрасно понимают.
Хороший язык — тот, на котором у среднего программиста получается более читаемый и понятный код.
А я то дурак всегда думал что читаемы и понятный код зависит от программиста
Совершеннолетие JavaScript