Movatterモバイル変換


[0]ホーム

URL:


はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマーク
  • テクノロジー
  • JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった
  • Twitterでシェア
  • Facebookでシェア

気に入った記事をブックマーク

  • 気に入った記事を保存できます
    保存した記事の一覧は、はてなブックマークで確認・編集ができます
  • 記事を読んだ感想やメモを書き残せます
  • 非公開でブックマークすることもできます
適切な情報に変更

エントリーの編集

loading...

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。

タイトルガイドライン

このページのオーナーなので以下のアクションを実行できます

タイトル、本文などの情報を
再取得することができます
コメントを非表示にできますコメント表示の設定

ブックマークしました

ここにツイート内容が記載されますhttps://b.hatena.ne.jp/URLはspanで囲んでください

Twitterで共有

ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します

98usersがブックマークコメント18

    ガイドラインをご確認の上、良識あるコメントにご協力ください

    0/0
    入力したタグを追加

    現在プライベートモードです設定を変更する

    おすすめタグタグについて

      よく使うタグ

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

        ガイドラインをご確認の上、良識あるコメントにご協力ください

        0/0
        入力したタグを追加

        現在プライベートモードです設定を変更する

        おすすめタグタグについて

          よく使うタグ

            はてなブックマーク

            はてなブックマークで
            関心をシェアしよう

            みんなの興味と感想が集まることで
            新しい発見や、深堀りがもっと楽しく

            ユーザー登録

            アカウントをお持ちの方はログインページ

            記事へのコメント18

            • 注目コメント
            • 新着コメント
            oisux
            仕様上、Statementが`{`で始まるとExpressionとして解釈されない(=Blockになる)ように定義されているhttps://262.ecma-international.org/14.0/#sec-expression-statement / node REPLは先頭が`{`の時()で囲むような処理をするので結果が異なる

              その他
              coppieee
              ブロックが文なので{}と+""か別々に評価されて、+が単行プラス演算子として機能してるからだな。なので+""は数値に変換されて0になる。

                その他
                yorkfield
                ブロックに対する足し算が文法エラーにならないんだ。

                  その他
                  hasiduki
                  実装より仕様を見たいな!!!!!!!

                    その他
                    tick2tack
                    { foo: "bar" } + "" で 0 が返ってくると。オブジェクトでなく foo というラベルの付いた "bar" という文のブロックとして評価されると

                      その他
                      shingo-sasaki-0529
                      Node だと結果が違うけど、 {} をブロックステートメントと解釈するかだから、処理系と言うより REPL の実装差異なのかなぁ。

                        その他
                        otchy210
                        {foo: "bar"} がオブジェクトリテラルではなくブロック内に `foo` ラベルの付いた "bar" という文として解釈されうるの、深慮に欠けたという意味でもはや仕様バグでは。正規表現リテラル並の闇。

                          その他
                          softstone
                          map()でオブジェクト返すときとかによく出会うやつだけど、アロー演算子とセットで覚えちゃってるから違うところで見るとギョッとするのもわかる。(あとJSの自動型変換が信用されてないのも…)

                            その他
                            satomi_hanten
                            暗黙の型変換が無い言語は嫌いだけど、挙動が一定でなかったり直感的でなかったりするのは好きじゃない。

                              その他
                              rryu
                              BlockStatementは文末にセミコロンのいらない文なので何事もなく文が終わり2つの文として解釈されているということなのか。オブジェクトの中身に見えるものがラベル付き文なのがおもしろい。

                              その他
                              axljpn
                              nodeだと[object Object]になったので実装依存?

                                その他
                                oisux
                                oisux仕様上、Statementが`{`で始まるとExpressionとして解釈されない(=Blockになる)ように定義されているhttps://262.ecma-international.org/14.0/#sec-expression-statement / node REPLは先頭が`{`の時()で囲むような処理をするので結果が異なる

                                  2024/01/24リンク

                                  その他
                                  Lhankor_Mhy
                                  答を読む前にわかった。オブジェクト初期化子をブロックと解釈されないように否定演算子とかvoidとかをつけたりするのは、JavaScript書いてるとよくある。

                                  その他
                                  beejaga
                                  スクリプトのオブジェクト構文に蹂躙されたおじいちゃんには当たり前の挙動に見えてしまうが、普通にIDEを使っていると気付かないか……

                                    その他
                                    nemoba
                                    ブロック文への演算??と思ったけど、空ブロック文の区切りと単項演算子が並んでる扱いなのかw

                                      その他
                                      coppieee
                                      coppieeeブロックが文なので{}と+""か別々に評価されて、+が単行プラス演算子として機能してるからだな。なので+""は数値に変換されて0になる。

                                        2024/01/24リンク

                                        その他
                                        yorkfield
                                        yorkfieldブロックに対する足し算が文法エラーにならないんだ。

                                          2024/01/24リンク

                                          その他
                                          odakaho
                                          セキュリティホールありそう

                                            その他
                                            tick2tack
                                            tick2tack{ foo: "bar" } + "" で 0 が返ってくると。オブジェクトでなく foo というラベルの付いた "bar" という文のブロックとして評価されると

                                              2024/01/24リンク

                                              その他
                                              ledsun
                                              “{} は空のブロック であり” へー、なるほどなあ

                                                その他
                                                hasiduki
                                                hasiduki実装より仕様を見たいな!!!!!!!

                                                  2024/01/24リンク

                                                  その他
                                                  quality1
                                                  やっぱりわからないJavaScript

                                                    その他
                                                    nmcli
                                                    バグ発見の手掛かりにはなりそう

                                                    その他

                                                    注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

                                                    リンクを埋め込む

                                                    以下のコードをコピーしてサイトに埋め込むことができます

                                                    プレビュー
                                                    アプリのスクリーンショット
                                                    いまの話題をアプリでチェック!
                                                    • バナー広告なし
                                                    • ミュート機能あり
                                                    • ダークモード搭載
                                                    アプリをダウンロード

                                                    関連記事

                                                      usersに達しました!

                                                      さんが1番目にブックマークした記事「JavaScriptでObjec...」が注目されています。

                                                      気持ちをシェアしよう

                                                      ツイートする

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

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

                                                      ブックマークしたユーザー

                                                      • techtech05212024/06/24techtech0521
                                                      • ymrl2024/01/25ymrl
                                                      • xef2024/01/24xef
                                                      • shingo-sasaki-05292024/01/24shingo-sasaki-0529
                                                      • buzztaiki2024/01/24buzztaiki
                                                      • locke-0092024/01/24locke-009
                                                      • ant_mugi2024/01/24ant_mugi
                                                      • kmnasjm2024/01/24kmnasjm
                                                      • khtokage2024/01/24khtokage
                                                      • honeybe2024/01/24honeybe
                                                      • naari_32024/01/24naari_3
                                                      • otchy2102024/01/24otchy210
                                                      • softstone2024/01/24softstone
                                                      • satomi_hanten2024/01/24satomi_hanten
                                                      • komanezumi712024/01/24komanezumi71
                                                      • makopy_inside2024/01/24makopy_inside
                                                      • jagagaj2024/01/24jagagaj
                                                      • peketamin2024/01/24peketamin
                                                      すべてのユーザーの
                                                      詳細を表示します

                                                      ブックマークしたすべてのユーザー

                                                      同じサイトの新着

                                                      同じサイトの新着をもっと読む

                                                      いま人気の記事

                                                      いま人気の記事をもっと読む

                                                      いま人気の記事 - テクノロジー

                                                      いま人気の記事 - テクノロジーをもっと読む

                                                      新着記事 - テクノロジー

                                                      新着記事 - テクノロジーをもっと読む

                                                      同時期にブックマークされた記事

                                                      いま人気の記事 - 企業メディア

                                                      企業メディアをもっと読む

                                                      はてなブックマーク

                                                      公式Twitter

                                                      はてなのサービス

                                                      • App Storeからダウンロード
                                                      • Google Playで手に入れよう
                                                      Copyright © 2005-2025Hatena. All Rights Reserved.
                                                      設定を変更しましたx

                                                      [8]ページ先頭

                                                      ©2009-2025 Movatter.jp