Upgrade to Pro — share decks privately, control downloads, hide ads and more …

インドのパンについての話 / a story about Indian bread

Arata
July 26, 2020
13

インドのパンについての話 / a story about Indian bread

Arata

July 26, 2020
Tweet

Transcript

  1. 他の言語では - Go言語 packge main import “math” func main() {

    math.IsNaN(+”インドのパン”) } ./hoge.go:4:14: invalid operation: + untyped string
  2. ドキュメントを調べる - ‘+’には2つの意味がある - 単項演算子: 1つの式に対しての演算 - e.g. +10 -

    二項演算子: 2つの式に対しての演算 - e.g. 10 + 5 - +[文字列]は単項演算子
  3. ドキュメントを調べる - Unary plus (+) - If it cannot parse

    a particular value, it will evaluate to NaN. - 意訳: 文字列が数字として解釈できなかったらNaNを返す https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unary_plus
  4. ソースコードを調べる - 環境: Node.js v14.3.0 - 内部でV8を使っている - Google製のJavaScriptエンジン -

    ECMA-262という仕様に従って実装されている - Chromeの内部で使われている
  5. ソースコードを調べる - 環境: Node.js v14.3.0 - 内部でV8を使っている - Google製のJavaScriptエンジン -

    ECMA-262という仕様に従って実装されている - Chromeの内部で使われている - GitHub: https://github.com/v8/v8
  6. ソースコードを調べる - “unary plus”でコミットを検索する - “Improve handling of unary plus.”

    - +[hoge] を [hoge]*1 に置換する - [hoge]が文字列の場合、String::ToNumber([hoge])*1に 置換する