JavaScriptの自動変換


エンコードテストの問題を解くとき、私の解答と他の開発者の解答を比較するときにこれらのコードを見ました.
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
ここで注意すべき部分は(n + "")+b + +aです.
元々ラーメンnには数字型のデータが含まれていたため、a,bはString型であったため、以下のような結果になる.
const n = 123;
const a = "1";
const b = "2";
console.log(n.split("")); // TypeError
console.log(b + a); // "21"
splitは、番号付けタイプでは使用できないため、タイプエラーが発生します.b + aは、私たちが望む値3ではなく、"21"を出力します.
しかし、低コードを作成した賢明な開発者が望む値を順調に実現したのは、どのように可能なのだろうか.
これはjavascriptの自動変換のおかげです.
JavaScriptでは、関数と演算子に渡される値は、通常、適切なデータ型に自動的に変換されます.
したがって、(n + "")から番号付けタイプnへとStringタイプに移行する.
つまり、""からStringタイプの+b + +aにプラス記号(+)を付けると、数字タイプになります.
他にもブール型に変換する方法があり、
数字0、空文字列、a, bnullundefinedなど「空」を直感的に表す値はNaNとされ、残りの値はfalseとされる.
すでに習った内容ですが、久しぶりのおめでたなので書いてみました.
以上
コンテンツソース:https://ko.javascript.info/type-conversions
サムネイルソース:https://velog.io/@yejinh/Javascript-%ED%98%95%EB%B3%80%ED%99%98