if(prop in obj)とif(obj [prop])の違いは?

アリック・コンリー

TestDome.comで作業していて、この質問に遭遇しました。

オブジェクトとプロパティ名を受け取り、次のことを行うremoveProperty関数を実装します。

オブジェクトobjにプロパティpropがある場合、関数はオブジェクトからプロパティを削除し、trueを返します。それ以外の場合はすべてfalseを返します。

私の解決策はこれでした:

function removeProperty(obj, prop) {
  if (obj[prop]) {
    delete obj[prop];
    return true;
  } else {
    return false;    
  }
}

テストによると、これは機能せず、解決策は次のとおりです。

function removeProperty(obj, prop) {
  if (prop in obj) {
    delete obj[prop];
    return true;
  } else {
    return false;
  }
}

私の一生の間、私の解決策が間違っている理由を理解することはできません。

編集:さらなる例。

const a = { b: 'c'};

if(a['b']) {console.log(true);} //true
if('b' in a) {console.log(true);} //true
Willem van der Veen

違いは次のとおりです。

obj = {
  prop: 1
};

// retrieves the property from the object
console.log(obj['prop']);    // 1

// checks if prop is in obj object
console.log('prop' in obj);     // true

ifステートメントの場合、両方ともtrueと評価されます。ただし、から取得した値ブロックにobj['prop']強制変換されfalse場合、if実行されません。例えば:

obj = {
  prop: 0
};

// 0 convert to false so 
if (obj['prop']) {
  console.log('executed 1');
}

// prop is a property of obj so 
// 'prop' in obj will evaluate to true
if ('prop' in obj) {
  console.log('executed 2');
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

EmberJS:get(obj、 'prop')とobj.get( 'prop')の違いは何ですか?

分類Dev

javascriptのobj?.prop構文とは何ですか?

分類Dev

<function prop = "Hello">と{function( "Hello")}の違い

分類Dev

obj.split()とobjの違い

分類Dev

type(obj)とobj .__ class__の違い

分類Dev

(void)objとvoid(obj)の違い

分類Dev

obj.func(arg)とobj.func.bind(obj、arg)の違い

分類Dev

Object obj = Object()とObject obj()の違いは何ですか?

分類Dev

obj.key = valueとobj.set(key、value)の違いは?

分類Dev

Class.prop、Class.prototype.prop、this.propの違いは何ですか?

分類Dev

List <Obj1>をMap <Obj1.prop、List <Obj1.otherProp>に変換する方法

分類Dev

`localStorageのprop`と` localStorage.getItem( 'prop')!== null`

分類Dev

jQueryのprop()とattr()の違い、およびattr()とprop()を使用するタイミング

分類Dev

.prop()と.attr()

分類Dev

require()とpropまたはcontextを介してオブジェクトを渡すことの違い

分類Dev

JavaScript:Reflect.get()とobj ['foo']の違い

分類Dev

Reflect.ownKeys(obj)とObject.keys(obj)の違いは何ですか?

分類Dev

ディレクティブスコープ(例:obj.prop)をチェーンすることは可能ですか?

分類Dev

Pythonの__getattribute__とobj .__ dict __ ['x']の違いは?

分類Dev

@StaticMetamodelおよびSingularAttribute <Obj、Obj>とは何ですか?

分類Dev

.c.obj / .cpp.objファイルとは何ですか?

分類Dev

'obj'と 'self.obj'のどちらを使用しますか?

分類Dev

ポリマー:計算されたプロパティと{{some(prop1)}}のような関数の違いは何ですか

分類Dev

nhibernateのUpdate(Object obj、Object id)とUpdate(string entity、Object obj)の違いは何ですか

分類Dev

obj.lengthが+ obj.lengthと等しくないのはいつですか?

分類Dev

c ++ベクトル-push_back(* new obj())とpush_back(obj())の違いは何ですか?

分類Dev

同期(obj)と宣言されたロックの使用の違い

分類Dev

OBJ == nullの対ヌル== OBJ

分類Dev

void insertElementAt(Object obj、int index)とvoid set(int index、object o)の違い

Related 関連記事

  1. 1

    EmberJS:get(obj、 'prop')とobj.get( 'prop')の違いは何ですか?

  2. 2

    javascriptのobj?.prop構文とは何ですか?

  3. 3

    <function prop = "Hello">と{function( "Hello")}の違い

  4. 4

    obj.split()とobjの違い

  5. 5

    type(obj)とobj .__ class__の違い

  6. 6

    (void)objとvoid(obj)の違い

  7. 7

    obj.func(arg)とobj.func.bind(obj、arg)の違い

  8. 8

    Object obj = Object()とObject obj()の違いは何ですか?

  9. 9

    obj.key = valueとobj.set(key、value)の違いは?

  10. 10

    Class.prop、Class.prototype.prop、this.propの違いは何ですか?

  11. 11

    List <Obj1>をMap <Obj1.prop、List <Obj1.otherProp>に変換する方法

  12. 12

    `localStorageのprop`と` localStorage.getItem( 'prop')!== null`

  13. 13

    jQueryのprop()とattr()の違い、およびattr()とprop()を使用するタイミング

  14. 14

    .prop()と.attr()

  15. 15

    require()とpropまたはcontextを介してオブジェクトを渡すことの違い

  16. 16

    JavaScript:Reflect.get()とobj ['foo']の違い

  17. 17

    Reflect.ownKeys(obj)とObject.keys(obj)の違いは何ですか?

  18. 18

    ディレクティブスコープ(例:obj.prop)をチェーンすることは可能ですか?

  19. 19

    Pythonの__getattribute__とobj .__ dict __ ['x']の違いは?

  20. 20

    @StaticMetamodelおよびSingularAttribute <Obj、Obj>とは何ですか?

  21. 21

    .c.obj / .cpp.objファイルとは何ですか?

  22. 22

    'obj'と 'self.obj'のどちらを使用しますか?

  23. 23

    ポリマー:計算されたプロパティと{{some(prop1)}}のような関数の違いは何ですか

  24. 24

    nhibernateのUpdate(Object obj、Object id)とUpdate(string entity、Object obj)の違いは何ですか

  25. 25

    obj.lengthが+ obj.lengthと等しくないのはいつですか?

  26. 26

    c ++ベクトル-push_back(* new obj())とpush_back(obj())の違いは何ですか?

  27. 27

    同期(obj)と宣言されたロックの使用の違い

  28. 28

    OBJ == nullの対ヌル== OBJ

  29. 29

    void insertElementAt(Object obj、int index)とvoid set(int index、object o)の違い

ホットタグ

アーカイブ