- 私は両方ともログインしましたが、同じ結果が返されましたが、少し差が である必要があります。
答えて
いいえ、誰かがJavaScript環境に何か愚かなことをしない限り、違いはありません。
"andrei"
は文字列プリミティブであるため、
typeof "andrei"
は
"string"
です。
"andrei".valueOf()
を実行している場合は、文字列プリミティブを
String
オブジェクト(理論*)に強制しています。そのオブジェクトのプロパティにアクセスしているため(
valueOf
)、そのオブジェクトのプリミティブ値 —がプリミティブな文字列ですしたがって、
typeof "andrei".valueOf()
は
"string"
です。
もちろん、String.prototype.valueOf
を、番号やオブジェクトなどを返すことでString.prototype.valueOf
契約を破ったデフォルト以外のものに置き換えることができます。しかし、それは奇妙な土地にあります。 「理論的に」
*
- JavaScriptエンジンは、操作は物事が仕様に応じていないように動作せない最適化を提供し、最適化するのは自由です。したがって、JavaScriptエンジンは.valueOf()
を文字列プリミティブに呼び出すことを最適化することができます。
String.prototype.valueOf
はプリミティブと同じ結果になるため、デフォルト値(エンジンが容易に認識できる)と同じです。私は彼らが
を行うかどうかわからない、を行うことができます。この1 I
deleted valueOf()
と結果は同じだったと私はそのことについてcouriousた中
if((typeof name !="undefined") && (typeof name.valueOf()=="string") && (name.length>0))
:質問に対するあなたのコメントを再
。
Ah!これは、2つの理由のために、さまざまなことだ:
name
が文字列ではないかもしれません。物事の多くはlength
プロパティ —文字列、関数、基本的な配列、配列を入力、DOMのコレクションを持って、スクリプトに定義されたオブジェクトの任意の数の...name
はString
オブジェクト(それはそうだが、人々かもしれString.prototype
の拡張メソッドを記述しない限り、通常String
オブジェクトを使用しないでください。この場合、this
はString
オブジェクトを参照します)。
このようにtypeof name.valueOf()=="string"
部分を削除すると、条件が変更されます。 Re:.valueOf()
部分:そのコードの作成者は、少し編集的であるか、またはname
がString
オブジェクトである可能性があります(そのタイプは"object"
で、"string"
ではありません)。 valueOf
を使用すると、代わりにプリミティブをチェックしていることが保証されます。
驚いたことに、彼らはnull
がそのコードで例外を引き起こすので、意外にも(文脈なしで)十分に編集的ではありませんでした。
各条件の周りの()
も全く必要ありません。同様null
の取り扱い
は次のようになります。
if (name != null && typeof name.valueOf() == "string" && name.length > 0)
ありがとう、本当に良い説明、私は一般的に物事についての質問が好き、なぜ私は私の質問に-3スコアを得たか?私は怠け者か何か他の人であったからではないと思う。私はこの種のものに少し慣れていて、学ぶのが楽しいですが、このコミュニティでひどく見たいと思っていません。 –
次回は、[興味のある方法のドキュメント](https://developer.mozilla.org)/ja-JP/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf) – impulsgraw
@AndreiSerban:わかりません。しかし、あなたの質問を明確かつ完全に提示する時間を取ることは、常に助けになります。それにはポイントがないときに番号付きのリストを使用しないなどのことが含まれます。おそらく、あなたが 'valueOf'が理解していることについて話すことで、違いがなければならないと考える理由があるでしょうか(少なくとも、幸せなコーディング、 –
String.prototype.valueOf()
方法は(ようとString.prototype.toString()
はありません)文字列プリミティブオブジェクト自体を返すためJavaScriptで"string".valueOf()
返す値と"string"
の間には、実際の違いはありません。 (EXのために起因comparsionへ) - String
クラスのプロトタイプ非修飾オブジェクトのインスタンスである
typeof "string" === typeof "string".valueOf() //true
(String).valueOf()
と(String)
を使用しての唯一の性能差は、単純な(String)
を呼び出すこと(String)
はという、当然のことながら(高速であることです)。
お時間をいただきありがとうございます! –
- 1. decltypeとtypeofの違いは?
- 2. (typeof variable === 'boolean')と(typeof variable == 'boolean')の違いは何ですか?
- 3. ccallのJulia typeof
- 4. Marshal.SizeOf(typeof(IntPtr))とsizeof(IntPtr)
- 5. はtypeofを
- 6. typeof jQuery.data()バグ?
- 7. typeof演算()
- 8. [TemplateContainer(typeof(MasterPage.Site1))]
- 9. RegisterType(typeof)vs RegisterType
- 10. typeof演算(jQueryの)
- 11. Javascriptの変更TYPEOF
- 12. Typescript typeof classと派生クラス
- 13. typeof(DateTime?)。Name == Nullable`1
- 14. mode、storage.mode、typeof of Rの違いは何ですか?
- 15. vC++でのTypeof()演算子
- 16. Cのtypeof演算子
- 17. Xamarin c#typeof(broadcasterclass)のインテントエラー
- 18. Silverlight 4アプリケーションでDataContractSerializer(typeof(BaseClass))
- 19. typeofとundefinedの奇妙な結果
- 20. jQueryのは、typeof演算とOR条件
- 21. はfsharpのtypeofと一致します
- 22. typeofを呼び出し
- 23. C#typeof( "Object Variable get type")
- 24. typeOf返されるタイプ
- 25. Asp.Net> TemplateContainer(typeof演算(MySite.MasterPage))
- 26. R- typeof()関数の場合、c(1:6)とc(1,2,3,4,5,6)の違いは?
- 27. typeof(Object [、] [])。Nameが "Object [] [、]"と等しいのはなぜですか? <code>typeof(Object[,][]).Name</code>評価
- 28. のtypeof typeof演算xは君たちが私を伝えることができ、ヌルの型がオブジェクト
- 29. "TYPEOF"はMysqlに相当しますか?
- 30. 'typeof $(document)[' on ']'は何をしますか?
なぜ違いが見込まれますか?あなたが何かについて混乱しているなら...理由を説明してください – charlietfl
これには((typeof name!= "undefined")&& (typeof name.valueOf()== "string")&& (name.length> 0)) 1つ私はvalueOf()を削除し、結果は同じであり、私はそれについて無力でした。 –