@omatoro
ActionScriptとかもECMAScript
のこと
// これが
var func1 = function (x, y) {
x = x || 100;
y = y || 10;
};
// こうなる
var func2 = function (x=100, y=10) {
};
デフォルト引数
var object = {
// 今まで
func1: function () {
console.log("func1");
},
// これから
func2 () {
console.log("func2");
},
};
メソッド
var func = function () {
var x = 100;
var y = 10;
return {x, y}; // いつもだったら{x: x, y: y}
};
オブジェクトリテラル
var value = 530000;
// いままで
var text1 = "私の戦闘力は"+value+"です";
// これから
var text2 = `私の戦闘力は${value}です `;
// 改行いれてもok(ただし\n扱い)
var text3 = `私の
戦闘力は${value}です `;
文字列内で変数を展開
2進数とか直接書く
console.log(0b0011); // 3
Objectのkeyに演算子つかえる
var interval = 5;
var object = {
[5]: 0,
[5+interval]: 1,
[5+interval*2]: 2,
};
アローファンクション
var square1 = function (x) {
return (x * x);
};
var square2 = (x) => { // function省略
return (x * x);
};
var square3 = x => { // 引数括弧の省略
return (x * x);
};
var square4 = x => (x * x); // return の省略まで
アローファンクション注意点
var test = {
func1: function () {
return (function () { return this; })();
},
func2: function () {
return (function () { return this; }.bind(this))();
},
func3: function () {
return (() => this)(); // これ関数です 無名関数実行してます
},
};
console.log(test === test.func1()); // -> false
console.log(test === test.func2()); // -> true
console.log(test === test.func3()); // -> true!?
可変長引数と展開
var print1 = function () {
console.dir(arguments);
};
print1(1,2,3,4);
// 可変長の引数を明示的に受け取れる
var print2 = function (...args) {
console.dir(args);
};
print2(1,2,3,4);
// ちなみに展開にも使える
var array = [1,2,3];
array.push(...[4,5,6]); // [1,2,3,4,5,6]
分割代入(デストラクチャリング)
var [a, b, c] = [1,2,3];
// 以下と同等
var a = 1;
var b = 2;
var c = 3;
デストラクチャリング応用例
var a = 1;
var b = 2;
// 値のスワップが一行で書ける
var [a, b] = [b, a];
// オブジェクトにも応用
var vector = {
x: 100,
y: 200,
};
var {x: newX, y: newY} = vector;
// 同名だったら短縮して書ける
var {x, y} = vector;
let
for (let i=0; i<3; ++i) {}
// console.log(i); -> error
if (1) {
let temp = 100;
}
// console.log(temp); -> error
let
if (1) {
let temp = 100;
let temp = 100; // -> type error
}
(() => {
let temp = 100;
let temp = 100; // -> type error
})();