JavaScript Traps 1 var test = 'global'; function foo() { console.log(test); // global?? local?? if (true) { var test = 'local'; console.log(test); // global?? local?? } } foo();
JavaScript Traps 1 var test = 'global'; function foo() { console.log(test); // undefined if (true) { var test = 'local'; console.log(test); // local } } foo();
JavaScript Traps 1 var test = 'global'; function foo() { var test; console.log(test); // undefined if (true) { test = 'local'; console.log(test); // local } } foo(); ࣮ࡍͷ&OHJOFͷ ղऍ͜͏ͳΔ
JavaScript Traps 1 var test = 'global'; function foo() { console.log(test); // global?? local?? if (true) { var test = 'local'; console.log(test); // global?? local?? } } foo(); ר্͖͛ࣄނ
JavaScript Traps 1 var test = 'global'; function foo() { console.log(test); // global?? local?? if (true) { var test = 'local'; console.log(test); // global?? local?? } } foo(); ר্͖͛ࣄނ
JavaScript Traps 1 const test = 'global'; function foo() { console.log(test); // global if (true) { const test = 'local'; console.log(test); // local } } foo();
JavaScript Traps 1 const test = 'global'; function foo() { console.log(test); // global if (true) { const test = 'local'; console.log(test); // local } } foo(); LGTM
JavaScript Traps 2 var Alice = function() { this.name = 'Alice'; }; Alice.prototype.printNameTick = function() { console.log(this.name); // Alice setInterval(() => { console.log(this.name); // Alice }, 1000); }; var alice = new Alice(); alice.printNameTick();
JavaScript Traps 2 var Alice = function() { this.name = 'Alice'; }; Alice.prototype.printNameTick = function() { console.log(this.name); // Alice setInterval(() => { console.log(this.name); // Alice }, 1000); }; var alice = new Alice(); alice.printNameTick(); LGTM
class class Alice { constructor() { this.name = 'Alice'; } printNameTick() { console.log(this.name); // Alice setInterval(() => { console.log(this.name); // Alice }, 1000); } } var alice = new Alice(); alice.printNameTick(); LVGTM
SIMD var a = SIMD.float32x4(1.0, 2.0, 3.0, 4.0); var b = SIMD.float32x4(5.0, 6.0, 7.0, 8.0); var c = SIMD.float32x4.add(a,b); console.log(c); // 6, 8, 10, 12 • Faster!
ES2015 class ͷදݱྗ͍ class Alice { constructor() { this.name = 'Alice' } printNameTick() { console.log(this.name); // Alice setInterval(() => { console.log(this.name); // Alice }, 1000); } } var alice = new Alice(); alice.printNameTick(); member field constructor ʹهड़ ͠ͳ͍ͱ͍͚ͳ͍
class props declarations class Alice { name = 'Alice'; // member field static foo = 'foo'; // static ͳfieldఆٛͰ͖Δ printNameTick() { console.log(this.name); // Alice setInterval(() => { console.log(this.name); // Alice }, 1000); } } var alice = new Alice(); alice.printNameTick();
class props declarations class Alice { name = 'Alice'; // member field static foo = 'foo'; // static ͳfieldఆٛͰ͖Δ printNameTick() { console.log(this.name); // Alice setInterval(() => { console.log(this.name); // Alice }, 1000); } } var alice = new Alice(); alice.printNameTick(); LVGTM
private member field class Alice { #name = 'Alice'; // private member field printNameTick() { console.log(this.#name); // Alice setInterval(() => { console.log(this.#name); // Alice }, 1000); } } var alice = new Alice(); alice.printNameTick(); ‧⛺è('ω')è⛺䡡‧
Decorator class Alice { #firstname = 'Alice'; // private member field #lastname = 'Bob'; // private member field @readonly // decorator fullname() { return `${this.#firstname} ${this.#lastname}` } } var alice = new Alice(); console.log(alice.fullname()); alice.fullname = function someMock(){}; // error