DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> Javascript操作符應用詳細講解
Javascript操作符應用詳細講解
編輯:關於JavaScript     
 

賦值操作符

賦值操作符會根據其右操作數側的值給左操作數賦值。

實現版本 Navigator 2.0

最基本的賦值操作數是等號(=),它會將右操作數的值直接賦給左操作數。也就是說,x = y 將把 y 的值賦給 x。其它的賦值操作符都是標准操作的縮略形式,列在表 2.2 中。

表 2.2 賦值操作符 縮寫操作符 含義 x += y x = x + y x -= y x = x - y x *= y x = x * y x /= y x = x / y x %= y x = x % y x <<= y x = x << y x >>= y x = x >> y x >>>= y x = x >>> y x &= y x = x & y x ^= y x = x ^ y x |= y x = x | y

 

比較操作符

所謂比較操作符,就是會比較其兩邊的操作數,並根據比較結果為真或假返回邏輯值。操作數可以是數值或字符串值。如果使用字符串值的話,比較是基於標准的字典順序。

實現版本 Navigator 2.0

相關內容列在了表 2.3 中。對於該表中的示例,我們假定 var1 被賦予了值 3,而 var2 被賦予了值 4。

表 2.3 比較操作符 操作符 描述 返回真的例子 相等(==) 如果操作數相等的話則返回真。 3 == var1 不等(!=) 如果操作數不等的話則返回真。 var1 != 4 大於(>) 如果左操作數大於右操作數的話則返回真。 var2 > var1 大於或等於(>=) 如果左操作數大於等於右操作數的話則返回真。 var2 >= var1
var1 >= 3 小於(<) 如果左操作數小於右操作數的話則返回真。 var1 < var2 小於或等於(<=) 如果左操作數小於等於右操作數的話則返回真。 var1 <= var2
var2 <= 5

 

算術操作符

將給定數值(常量或變量)進行給定的計算,並返回一個數值。標准的算術操作符是加(+)、減(-)、乘(*)、除(/)四則運算。這些操作符與在其它編程語言中的作用一樣。

實現版本 Navigator 2.0

 

% (取余)

取余操作符用法如下:

var1 % var2

取余運算符將返回第一個操作數除以第二個操作數的余數。對於上面的例子來說,將返回 var1 變量除以 var2 變量的余數。更具體的例子是,12 % 5 將返回 2。

 

++ (自增)

自增操作符用法如下:

var++ 或 ++var

該自增操作符將自增操作數(自己加上 1)並返回一個值。如果寫在變量後面(如 x++),將返回自增前的值。如果寫在變量前面(如 ++x),將返回自增後的值。

例如,如果 x 是 3,那麼語句 y = x++ 將先把 y 置為 3 再將 x 自增為 4。相反,語句 y = ++x 將先將 x 自增為 4,再將 y 置為 4。

 

-- (自減)

自減操作符用法如下:

var-- 或 --var

該自增操作符將自減操作數(自己減去 1)並返回一個值。如果寫在變量後面(如 x--),將返回自減前的值。如果寫在變量前面(如 --x),將返回自減後的值。

例如,如果 x 是 3,那麼語句 y = x-- 將先把 y 置為 3 再將 x 自減為 2。相反,語句 y = --x 將先將 x 自減為 2,再將 y 置為 2。

 

- (求相反數)

求相反數操作數將取得操作數的相反數。例如,y = -x 將把 x 相反數的值賦給 y;也就是說,如果 x 是 3 的話,y 就會獲得 -3 而 x 還是 3。

 

位操作符

執行位操作時,操作符會將操作數看作一串二進制位(1和0),而不是十進制、十六進制或八進制數字。例如,十進制的 9 就是二進制的 1001。位操作符在執行的時候會以二進制形式進行操作,但返回的值仍是標准的 JavaScript 數值。

表 2.4 JavaScript 位操作符總覽

表 2.4 位操作符 操作符 用法 描述 按位與 a & b 如果兩個操作數對應位都是 1 的話則在該位返回 1。 按位或 a | b 如果兩個操作數對應位都是 0 的話則在該位返回 0。 按位異或 a ^ b 如果兩個操作數對應位只有一個 1 的話則在該位返回 1。 求反 ~ a 反轉操作數的每一位。 左移 a << b 將 a 的二進制形式左移 b 位。右面的空位補零。 算術右移 a >> b 將 a 的二進制形式右移 b 位。忽略被移出的位。 邏輯右移 a >>> b 將 a 的二進制形式右移 b 位。忽略被移出的位,左側補入 0。

 

位邏輯操作符

實現版本 Navigator 2.0

 

     

  • 將操作數轉換為 32 位的整型數值並用二進制表示。

     

  • 第一操作數的每一位與第二操作數的對應位配對:第一位對第一位,第二位對第二位,以此類推。

     

  • 對每一對位應用操作符,最終結果按位組合起來。
例如,9 的二進制表示為 1001,15 的二進制表示為 1111。所以如果對這兩個數應用位邏輯操作符,結果應該像下面這樣:

 

     

  • 15 & 9 結果為 9 (1111 & 1001 = 1001)

     

  • 15 | 9 為 15 (1111 | 1001 = 1111)

     

  • 15 ^ 9 為 6 (1111 ^ 1001 = 0110)

移位操作符

實現版本 Navigator 2.0

移位操作符將把兩個操作符轉換為 32 位整型數值,並返回與左操作數類型相同的結果。

 

<< (左移)

該操作符將把第一個操作數向左移若干位。移出的位將被忽略。右側空位補零。

例如,9<<2 結果為 36,因為 1001 向左移兩位變成 100100,這是 36。

 

>> (算術右移)

該操作符將把第一個操作數享有移若干位。移出的位將被忽略。左側的空位補上與原來最左面位相同的值。

例如,9>>2 結果為 2,因為 1001 右移兩位變成 10,這是 2。反之,-9>>2 結果為 -3,因為要考慮到符號位。

 

>>> (邏輯右移)

該操作符將把第一個操作數享有移若干位。移出的位將被忽略。左側的空位補零。

例如,19>>>2 結果為 4,因為 10011 右移兩位變成 100,這是 4。對於非負數,算術右移和邏輯右移結果相同。

 

邏輯操作符

邏輯操作符用 Boolean 值(布爾邏輯值)作為操作數,並返回 Boolean 值。

實現版本 Navigator 2.0

表 2.5 描述的很清楚。

表 2.5 邏輯操作符 操作符 用法 描述 與(&&) expr1 && expr2 如果 expr1 為假則返回之,否則返回 expr2。 或(||) expr1 || expr2 如果 expr1 為真則返回之,否則返回 expr2。 非(!) !expr 如果 expr 為真則返回假,否則返回真。

 

示例

考慮下面的腳本:

<script language="JavaScript1.2">"
v1 = "貓";
v2 = "狗";
v3 = false;
document.writeln("t && t 返回 " + (v1 && v2));
document.writeln("f && t 返回 " + (v3 && v1));
document.writeln("t && f 返回 " + (v1 && v3));
document.writeln("f && f 返回 " + (v3 && (3 == 4))); document.writeln("t || t 返回 " + (v1 || v2));
document.writeln("f || t 返回 " + (v3 || v1));
document.writeln("t || f 返回 " + (v1 || v3));
document.writeln("f || f 返回 " + (v3 || (3 == 4)));
document.writeln("!t 返回 " + (!v1));
document.writeln("!f 返回 " + (!v3));
</script>

該腳本將顯示下列內容:

t && t 返回 狗
f && t 返回 false
t && f 返回 false
f && f 返回 false
t || t 返回 貓
f || t 返回 貓
t || f 返回 貓
f || f 返回 false
!t 返回 false
!f 返回 true

簡化計算

由於邏輯表達式是從左到右計算的,計算機自然不會傻到真的將全部表達式都計算一遍,它會試著偷偷懶,想辦法按照下面的規則“簡化”計算:

 

     

  • false && 任何值 都會被簡化為 false。

     

  • true || 任何值 都會被簡化計算為 true。
邏輯運算的簡化原則是保證邏輯運算本身總是正確的。請注意,如果使用了簡化規則,那麼被簡化掉的表達式就不會進行計算,所以也就不會產生它應該起的作用。

 

字符串操作符

除了比較操作符,可應用於字符串值的操作符還有連接操作符(+),它會將兩個字符串連接在一起,並返回連接的結果。例如,“my ” +“string”將返回字符串“my string”。

實現版本 Navigator 2.0

組合賦值操作符 += 也可用於連接字符串。例如,如果變量 mystring 的值為“alpha”,表達式 mystring += "bet" 將計算出“alphabet”並將其賦給 mystring。

 

特殊操作符

?: (條件操作符)

條件操作符是 JavaScript 所有操作符之中唯一需要三個操作數的。該操作符通常用於取代簡單的 if 語句。

實現版本 Navigator 2.0

 

語法

condition ? expr1 : expr2

參數

condition 計算結果為 true 或 false 的表達式 expr1, expr2 任意類型值的表達式。

 

描述

如果 condition 為真的話,該操作符將返回 expr1 的值;否則返回 expr2 的值。例如,要根據 isMember 變量的值顯示不同的信息,可以使用此語句:

document.write ("收費為 " + (isMember ? "$2.00" : "$10.00"))

, (逗號操作符)

逗號操作符非常簡單。它會依次計算兩個操作數並返回第二個操作數的值。

實現版本 Navigator 2.0

 

語法

expr1, expr2

參數

expr1, expr2 任意表達式

 

描述

你可以在你想要在只能填入一個表達式的地方寫入多個表達式時使用逗號操作符。該操作符最常見的用途是在 for 語句中使用多個變量作為循環變量。

例如,如果 a 是一個 10x10 的二維數組,下面的代碼將使用逗號操作符一次自增兩個變量。結果是打印出該數組副對角線上的元素:

for (var i=0, j=10; i <= 10; i++, j--)
   document.writeln("a["+i+","+j+"]= " + a[i,j])

delete

刪除一個對象的屬性或者數組中特定位置的元素。

實現版本 Navigator 2.0

 

語法

delete objectName.property
delete objectName[index]
delete property

參數

objectName 對象的名稱。 屬性 已有的屬性。 index 一個整型數值,表明了要刪除的元素在數組處的位置。

 

描述

第三種格式只在 with 語句中合法。

如果刪除成功,delete 操作符將把屬性或元素設為 undefined(未定義)。delete 總是返回 undefined。

 

new

該操作符用於創建用戶自定義對象類型或者擁有構造函數的內建對象類型的實例。

實現版本 Navigator 2.0

 

語法

objectName = new objectType (param1 [,param2] ...[,paramN])

參數

objectName 新對象實例的名稱。 objectType 對象類型。它必須是一個定義對象類型的函數。 param1...paramN 對象的屬性值。這些屬性是 objectType 函數的參數。

 

描述

創建一個用戶自定義對象需要兩個步驟:

 

     

  1. 寫一個函數定義一種對象類型。

     

  2. 用 new 創建一個該對象的實例。
要定義一個對象類型,需要為該對象創建一個指定名稱、屬性和方法的函數。一個對象的屬性可以是其它類型的對象。請參看下面的例子。

你總可以向已經定義的對象中添加屬性。例如,car1.color = "black" 將給 car1 添加一個叫 color 的屬性,並給其賦值“black”。不過這對其它任何對象並沒有什麼作用。要給同一類型的所有對象都添加一個新的屬性,你必須向 car 對象類型的定義中添加屬性。

你可以使用 Function.prototype 屬性向先前定義的對象類型中添加屬性。這將定義一個被所有由該函數創建的對象共享的屬性,而不只是一個對象類型實例才有。下面的代碼將為所有 car 類型的對象添加一個 color 屬性,然後將對象 car1 的 color 屬性賦值。更多信息,請參看 prototype。

Car.prototype.color=null
car1.color="black"

示例

示例 1:對象類型和對象實例。假設你想要創建一個汽車使用的對象類型。你想要這種對象類型叫做 car,有屬性 make, model, 和 year。要完成這麼多事情,你需要編寫如下的函數:

function car(make, model, year) {
   this.make = make
   this.model = model
   this.year = year
}
現在你就可以用下面的方法創建一個叫做 mycar 的對象了:

mycar = new car("Eagle", "Talon TSi", 1993)

該語句創建了 mycar 並將其屬性賦了指定的值。也就是說,mycar.make 的值是字符串“Eagle”,mycar.year 是整型數 1993,等等。

使用 new 你可以創建任意多個 car 對象。如,

kenscar = new car("Nissan", "300ZX", 1992) 示例 2: 對象屬性就是另外一個對象。假設你按照下面代碼定義了一個叫做 person 的對象類型:

function person(name, age, sex) {
   this.name = name
   this.age = age
   this.sex = sex
}
然後創建了兩個新的 person 實例:

rand = new person("Rand McNally", 33, "M")
ken = new person("Ken Jones", 39, "M")
現在你可以重寫 car 的定義,以便包含一個 person 對象作為 owner 屬性表明車主:

function car(make, model, year, owner) {
   this.make = make;
   this.model = model;
   this.year = year;
   this.owner = owner;
}
要創建一個新對象的實例,你可以使用下面的代碼:

car1 = new car("Eagle", "Talon TSi", 1993, rand);
car2 = new car("Nissan", "300ZX", 1992, ken)

請注意,我們在創建對象的時候並沒有給出一個常量字符串或者一個整型值,而是傳遞了對象 kand 和 ken 作為 owner 的參數。要找出 car2 車主的名字的方法是:

car2.owner.name

this

該關鍵字用於引用當前對象,通常情況下,方法中的 this 指調用它的對象。

實現版本 Navigator 2.0

 

語法

this[.propertyName]

示例

假定有一個叫做 validate 的函數可以校驗對象的 value 屬性,如果給出對象值的上下限的話:

function validate(obj, lowval, hival) {
   if ((obj.value < lowval) || (obj.value > hival))
      alert("無效數據e!")
}

你可以在每個窗體元素的 onChange 事件句柄中調用 validate,只用下面的格式傳遞 this 作為參數就行了:

<B>請輸入 18 到 99 之間的數值:</B>
<INPUT TYPE = "text" NAME = "age" SIZE = 3
   onChange="validate(this, 18, 99)">

typeof

typeof 操作符用法格式如下:

1. typeof operand
2. typeof (operand)

typeof 操作符將返回一個字符串,表明未計算的 operand 操作數是什麼類型的。operand 是一個要返回類型的字符串變量、關鍵字或者對象。圓括號可選。

實現版本 Navigator 3.0

假設你定義了下面的變量:

var myFun = new Function("5+2")
var shape="round"
var size=1
var today=new Date()

typeof 操作符將返回下面的值:

typeof myFun is object
typeof shape is string
typeof size is number
typeof today is object
typeof dontExist is undefined

對於關鍵字 true 和 null,typeof 操作符返回下面的結果:

typeof true is boolean
typeof null is object

對於數值或字符串,typeof 操作符返回下面的結果:

typeof 62 is number
typeof 'Hello world' is string

對於屬性值,typeof 操作符返回屬性所含值的類型:

typeof document.lastModified is string
typeof window.length is number
typeof Math.LN2 is number

對於方法和函數,typeof 操作符返回下面的結果:

typeof blur is function
typeof eval is function
typeof parseInt is function
typeof shape.split is function

對於預定義對象,typeof 操作符返回下面的結果:

typeof Date is function
typeof Function is function
typeof Math is function
typeof Option is function
typeof String is function

void

void 操作符用法格式如下:

1. javascript:void (expression)
2. javascript:void expression

void 操作符指定要計算一個表達式但是不返回值。expression 是一個要計算的 JavaScript 標准的表達式。表達式外側的圓括號是可選的,但是寫上去是一個好習慣。

實現版本 Navigator 3.0

你可以使用 void 操作符指定超級鏈接。表達式會被計算但是不會在當前文檔處裝入任何內容。

下面的代碼創建了一個超級鏈接,當用戶點擊以後不會發生任何事。當用戶點擊鏈接時,void(0) 計算為 0,但在 JavaScript 上沒有任何效果。

<A HREF="javascript:void(0)">單擊此處什麼也不會發生</A>

下面的代碼創建了一個超級鏈接,用戶單擊時會提交表單。

<A HREF="javascript:void(document.form.submit())">
單擊此處提交表單</A>

移位操作符需要兩個操作數:第一個是要進行移位的數值,第二個指定要對第一個數移位的數目。移位的方向由使用的操作符決定。 從原理上講,位邏輯操作符的工作流程是這樣的:

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved