Twitter hashtag: #esspec
便利ツール
時事ネタ
自己紹介 (近況報告)
syumai syumai.icon
Go / TSを書いて暮らしてます
先週、Goのイテレータについての発表をしました
引き続き、原稿に苦しんでいます
iwatsurut
とくに、イベントもなく過ごしています。
先週の Go のイテレータの勉強会見ました。
YAMAMOTO Yuji
初参加
iPad Proのディスプレイが壊れたので直したら、純正パーツじゃなかったためか音ゲーがめっちゃプレイしづらくなってしまって辛い
yebis0942
数回ぶりの参加です
GoとTypeScriptを書いています
書いてて良かった自社テックブログ
前回のあらすじ
今回は長いので略
今回の範囲
16 ECMAScript Language: Scripts and Modules の 16.1.7 GlobalDeclarationInstantiation の step: 9 から
NOTE2
var以外の変数宣言全部
global objectがProxyで定義されている場合
hostによってはそういうこともあるのだろう
?がついている呼び出しはabruptになりうる
Proxyを使うと本来は内部的な操作であるはずのものに任意の処理を差し込める If this occurs, the code for the Script is not evaluated.
宣言に問題があると評価すら行われない
more than one Script
HTMLで一つのdocumentに複数の<script>タグがある場合
name conflicts between function/var declarations and let/const/class declarations
これが再現できず
yebis0942.iconメモ
16.1.1
It is a Syntax Error if any element of the LexicallyDeclaredNames of ScriptBody also occurs in the VarDeclaredNames of ScriptBody.
この定義によると、letとvarがかぶるとSyntax Errorっぽい
つまりこんなやつでは?
Single Script版
code:js
console.log("before var");
var a;
console.log("after var");
console.log("before let");
let a;
console.log("after let");
code:output
Uncaught SyntaxError: redeclaration of var a
More than one Script版
code:html
<html>
<script>
console.log("before var");
var a;
console.log("after var");
</script>
<script>
console.log("before let");
let a;
console.log("after let");
</script>
</html>
code:console
before var
after var
Uncaught SyntaxError: redeclaration of var a
// 2番目のscriptタグの評価前にSyntax Errorで終了している
CommonJSで複数のファイルをrequireした場合
Node.jsでは隔離されていそう
[+default]の文法的パラメーターの用途
export defaultの場合は名前を付けずに済ませられるようになる
code:js
class A {}; // OK
class {}; // Syntax Error
export default class A {}; // OK
export default class {}; // OK
export defaultは何でも受け付ける説
code:js
let a = 1;
export default a = 2; // OK
ModuleExportNameにStringLiteralが許されるようになった理由
Wasm対応のため
export {};を許容しているのはなぜか?
自動生成の便宜のため?
あえて禁止する理由もないため?