ブックマーク / zenn.dev/ymrl (1)

  • JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった

    ASTをみてみよう この不思議な現象を調査するために、AST(Abstract Syntax Tree: 抽象構文木)の状態を見てみることにしました。ASTはソースコードを構文解析した結果をツリー構造にしたもので、AST Explorerを使うと簡単に見ることができます。 ({}) + "" のAST ({}) + "" のASTをみると、ひとつの ExpressionStatement となっているのがわかります。ExpressionStatement の leftは ObjectExpression 、 operator は + 、rightは Literal となっていて、たしかに Object と String の足し算になっています。これなら確かに"[object Object]" が返ってくるでしょう。 {} + ""のAST しかし、{} + "" のASTをみると、Bloc

    JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった
    softstone
    softstone 2024/01/24
    map()でオブジェクト返すときとかによく出会うやつだけど、アロー演算子とセットで覚えちゃってるから違うところで見るとギョッとするのもわかる。(あとJSの自動型変換が信用されてないのも…)
  • 1