現在的位置: 首頁 > 移動開發 > 正文

JS運算符是什么意思

2020年06月10日 移動開發 ⁄ 共 2741字 ⁄ 字號 評論關閉

  運算符,通常是容易被忽略的一個內容,但是一些比較古怪的語法現象仍然可能需要用到運算符的結合率或者其作用來進行解釋,JavaScript中,運算符是一定需要注意的地方,有很多具有JS編程經驗的人仍然免不了被搞得暈頭轉向。下面學步園小編來講解下JS運算符是什么意思?

  JS運算符是什么意思

  中括號運算符([])

  中括號([])運算符可用在數組對象和對象上,從數組中按下標取值:

  var array=["one","two","three","four"];

  array[0]

  而[]同樣可以作用于對象,一般而言,對象中的屬性的值是通過點(.)運算符來取值,如:

  var object={

  field:"self",

  printInfo:function(){

  print(this.field);

  }

  }

  object.field;

  object.printInfo();

  但是考慮到這樣一種情況,我們在遍歷一個對象的時候,對其中的屬性的鍵(key)是一無所知的,我們怎么通過點(.)來訪問呢?這時候我們就可以使用[]運算符:

  for(var key in object){

  print(key+":"+object[key]);

  }

  運行結果如下:

  field:slef

  printInfo:function(){

  print(this.field);

  }

  點運算符(.)

  點運算符的左邊為一個對象(屬性的集合),右邊為屬性名,應該注意的是右邊的值除了作為左邊的對象的屬性外,同時還可能是它自己的右邊的值的對象:

  var object={

  field:"self",

  printInfo:function(){

  print(this.field);

  },

  outter:{

  inner:"inner text",

  printInnerText:function(){

  print(this.inner);

  }

  }

  }

  object.outter.printInnerText();

  這個例子中,outter作為object的屬性,同時又是printInnerText()的對象。

  但是點(.)操作符并不總是可用的,考慮這樣一種情況,如果一個對象的屬性本身就包含點(.)的鍵(self.ref),點操作符就無能為力了:

  var ref={

  id:"reference1",

  func:function(){

  return this.id;

  }

  };

  var obj={

  id:"object1",

  "self.ref":ref

  };

  當我們嘗試訪問obj的”self.ref”這個屬性的時候:obj.self.ref,解釋器會以為obj中有個名為self的屬性,而self對象又有個ref的屬性,這樣會發生不可預知的錯誤,一個好的解決方法是使用中括號([])運算符來訪問:

  print(obj["self.ref"].func());

  在這種情況下,中括號操作符成為唯一可行的方式,因此,建議在不知道對象的內部結構的時候(比如要遍歷對象來獲取某個屬性的值),一定要使用中括號操作符,這樣可以避免一些意想不到的bug。

  ==和===以及!=和!==

  運算符==讀作相等,而運算符===則讀作等同。這兩種運算符操作都是在JavaScript代碼中經常見到的,但是意義則不完全相同,簡而言之,相等操作符會對兩邊的操作數做類型轉換,而等同則不會。我們還是通過例子來說明:

  JS運算符是什么意思

  print(1==true);

  print(1===true);

  print(""==false);

  print(""===false);

  print(null==undefined);

  print(null===undefined);

  運行結果如下:

  true

  false

  true

  false

  true

  false

  相等和等同運算符的規則分別如下:

  相等運算符

  如果操作數具有相同的類型,則判斷其等同性,如果兩個操作數的值相等,則返回true(相等),否則返回false(不相等)。

  如果操作數的類型不同,則按照這樣的情況來判斷:

  null和undefined相等。

  其中一個是數字,另一個是字符串,則將字符串轉換為數字,在做比較。

  其中一個是true,先轉換成1(false則轉換為0)在做比較。

  如果一個值是對象,另一個是數字/字符串,則將對象轉換為原始值(通過toString()或者valueOf()方法)。

  其他情況,則直接返回false。

  等同運算符

  如果操作數的類型不同,則不進行值的判斷,直接返回false

  如果操作數的類型相同,分下列情況來判斷:

  都是數字的情況,如果值相同,則兩者等同(有一個例外,就是NaN,NaN與其本身也不相等),否則不等同

  都是字符串的情況,與其他程序設計語言一樣,如果串的值不等,則不等同,否則等同

  都是布爾值,且值均為true/false,則等同,否則不等同

  如果兩個操作數引用同一個對象(數組,函數),則兩者完全等同,否則不等同

  如果兩個操作數均為null/undefined,則等同,否則不等同

  比如:

  var obj={

  id:"self",

  name:"object"

  };

  var oa=obj;

  var ob=obj;

  print(oa==ob);

  print(oa===ob);

  會返回:

  true

  true

  再來看一個對象的例子:

  var obj1={

  id:"self",

  name:"object",

  toString:function(){

  return"object 1";

  }

  }

  var obj2="object 1";

  print(obj1==obj2);

  print(obj1===obj2);

  返回值為:

  true

  false

  obj1是一個對象,而obj2是一個結構與之完全不同的字符串,而如果用相等操作符來判斷,則兩者是完全相同的,因為obj1重載了頂層對象的toString方法。

  而!=不等和!==不等同,則與==/!==相反。因此,在JavaScript中,使用相等/等同,不等/不等同的時候,一定要注意類型的轉換,這里推薦使用等同/不等同來進行判斷,這樣可以避免一些難以調試的bug。

  以上就是關于“JS運算符是什么意思”的內容,希望對大家有用。更多資訊請關注學步園。學步園,您學習IT技術的優質平臺!

抱歉!評論已關閉.

奔驰宝马破解版下载 彩库宝典开奖视频下载 幸运飞艇9码图 3d试机号开奖官网 佛山期货配资公司 彩票骰子猜大小单双 河南快三投注技巧 最好免费炒股软件 黑龙江十一选五开奖信息 快乐8开奖记录 上海天天彩选4开奖结果查询 秒速牛牛在线计划平台 主力怎么洗融资盘 黑龙江6+1开奖结果 赣州股票配资 重庆快乐十分开奖结果走势图 建设银行股票股票行情