前提・実現したいこと
ES5ではStringクラスにstartsWith関数が実装いないのですが、startsWith関数を使いたいので、
このページに載っている実装方法をそのまま使うことにしました。
想定通りの動きをしているのですが、なぜそのように実装したのかわからない箇所があり、
そのように書く理由を教えていただきたいです。
分からないのはrawPos|0の意味です。この演算子の意味はビット演算子のORだと分かるのですが、
なぜORを取る必要があるのかがわからないです。というのはrawPosが0より大きい場合に0と論理和をとっても
rawPosの値のままであるのであるからです。rawPos|0とせずにrawPosだけでもいいのではないかと思います。
このソースコードの意図を教えてください。
ご教授よろしくお願いいたします。
該当のソースコード
javascript
1if (!String.prototype.startsWith) { 2 Object.defineProperty(String.prototype, 'startsWith', { 3 value: function(search, rawPos) { 4 var pos = rawPos > 0 ? rawPos|0 : 0; 5 return this.substring(pos, pos + search.length) === search; 6 } 7 }); 8}
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/31 01:48
2021/05/31 02:18