javascript - オブジェクト メソッドを使用すると、コンソールの結果に余分な uniffed が表示されるのはなぜですか?
習慣沉默
習慣沉默 2017-05-19 10:32:47
0
7
825

Q1 コンソールが最後に 2 つの uniffed を出力したのはなぜですか?

リーリー

Q2 はもう 1 つ未解決の問題があるように感じます

リーリー

補足:
問題の原因:
Ruan Yifeng の JS 標準のこのキーワード
上記のコードはリンクの 2. (3) オブジェクト メソッド 最後の段落

習慣沉默
習慣沉默

全員に返信(7)
漂亮男人

前のヘルプを要約した自動的な回答:

Q1
最初のものは未定義です。hello が functionName とみなせるメソッドを指しているため、これは window です
this.p; //window.p//最初に window.p を宣言し、割り当てられていません。値は uniffed です

重要なのは、もう 1 つ未定義のものがあるということです。
2 番目の未定義は前に矢印があります。
m 関数に return 'test' を追加します。 //"test"
ここで、m 関数には return がない場合の値と見なすことができます。戻り値は未定義です
概要: 前の矢印はコンソールに固有のものであり、コマンドラインのデバッグ中には使用できません。コンソールは最初に関数を実行し、次に関数の実行結果を出力します。 、他のものに値を割り当てるために使用できます)

Q2

最初のものは、hello が b とみなせるオブジェクトを指しているため、未定義です。

いいねを押す +0
小葫芦

は最後のステートメントの戻り値です。 m 関数に return "test" を追加してみてはいかがでしょうか。

いいねを押す +0
黄舟

個人的には、最初の未定義は関数に戻り値がないためで、2 番目の未定義はブラウザのデバッグが原因である可能性があると思います。コマンド ライン デバッグを使用して 2 番目の未定義が表示されるかどうかを確認してください。

いいねを押す +0
迷茫

Chrome ブラウザ コンソールを使用していますか? 2 番目の未定義は固有のものであり、コードとは何の関係もありません。

「var a = 1;」と入力します。

Enterを押すと未定義もあります。

いいねを押す +0
为情所困

このメソッドの this ポインタは、a オブジェクト内のメソッドの定義を window を指すように変更しており、window の下に p の定義はありません。 var hello の前に 1 つ宣言してください。わかりました

いいねを押す +0
黄舟

1.hello() には戻り値がありません
2.console.log() この関数には戻り値がありません

いいねを押す +0
仅有的幸福

追加の質問undefined是js语句本身的值,剩下的就是this

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート