Operator Unari ECMAScript
- 上一页 Tipe Referensi ECMAScript
- 下一页 位运算符
一元运算符只有一个参数,即要操作的对象或值。它们是 ECMAScript 中最简单的运算符。
delete
delete 运算符删除对以前定义的对象属性或方法的引用。例如:
var o = new Object; o.name = "David"; alert(o.name); //输出 "David" delete o.name; alert(o.name); //Mengeluarkan "undefined"
Dalam contoh ini, penghapusan properti name berarti menghapus referensi kepadanya, mengaturnya menjadi undefined (yaitu nilai variabel yang belum diinisialisasi).
Operator delete tidak dapat menghapus properti dan method yang belum didefinisikan pengembang. Misalnya, kode di bawah ini akan memicu kesalahan:
delete o.toString;
Meskipun toString adalah nama method yang valid, baris kode ini akan memicu kesalahan, karena method toString() adalah method ECMAScript asli, bukan yang didefinisikan pengembang.
void
Operator void mengembalikan undefined untuk setiap nilai. Operator ini biasanya digunakan untuk menghindari penulisan nilai yang tidak seharusnya diekspresikan, seperti saat memanggil fungsi JavaScript dari elemen <a> HTML. Untuk melakukan hal ini dengan benar, fungsi tidak boleh mengembalikan nilai yang valid, atau browser akan membersihkan halaman dan hanya menampilkan hasil fungsi.
<a href="javascript:window.open('about:blank')">Klik saya</a>
Jika mengisi baris kode ini ke halaman HTML, klik tautan di dalamnya, Anda akan melihat tampilan "[object]" di layar.TIY
Karena metode window.open() mengembalikan referensi jendela yang baru dibuka. kemudian objek ini akan diubah menjadi string yang akan ditampilkan.
Untuk menghindari efek ini, gunakan operator void untuk memanggil fungsi window.open():
<a href="javascript:void(window.open('about:blank'))">Klik saya</a>
Ini membuat pemanggilan window.open() mengembalikan undefined, yang bukan nilai yang valid, tidak akan ditampilkan di jendela browser.
Petunjuk:Ingatlah, fungsi yang sebenarnya mengembalikan nilai undefined yang tidak ada kembalian.
Operator peng tambahan/pengurangan awal
Dua operator yang dipinjamkan langsung dari C (dan Java) adalah operator peng tambahan awal dan pengurangan awal.
Operator peng tambahan awal adalah menambahkan nilai 1, bentuknya adalah menempatkan dua tanda tambahan (++) sebelum variabel:
var iNum = 10; ++iNum;
Baris kedua kode menambahkan nilai iNum menjadi 11, yang sebenarnya setara dengan:
var iNum = 10; iNum = iNum + 1;
Demikian pula, operator pengurangan awal adalah mengurangi nilai 1, bentuknya adalah menempatkan dua tanda pengurangan (--) sebelum variabel:
var iNum = 10; --iNum;
Dalam contoh ini, baris kedua kode mengurangi nilai iNum menjadi 9.
Pada penggunaan operator prefix, perhatikan bahwa operasi penambahan dan pengurangan terjadi sebelum penghitungan ekspresi. Dengan berikan contoh di bawah ini:
var iNum = 10; --iNum; alert(iNum); // keluaran "9" alert(--iNum); // keluaran "8" alert(iNum); // keluaran "8"
Baris kedua kode menjalankan operasi pengurangan iNum, baris ketiga menampilkan hasilnya ("9"). Baris keempat lagi menjalankan operasi pengurangan iNum, tetapi kali ini operasi pengurangan dan operasi output berada dalam satu pernyataan, hasilnya adalah "8". Untuk memperlihatkan bahwa semua operasi pengurangan sudah dilakukan, baris kelima kembali menampilkan "8".
Dalam ekspresi aritmetik, prioriti operator penambahan dan pengurangan prefiks adalah sama, jadi perhitungan harus dilakukan dari kiri ke kanan. Contoh:
var iNum1 = 2; var iNum2 = 20; var iNum3 = --iNum1 + ++iNum2; // berset ke "22" var iNum4 = iNum1 + iNum2; // berset ke "22"
Dalam kode sebelumnya, iNum3 sama dengan 22, karena ekspresi yang dihitung adalah 1 + 21. Variabel iNum4 juga sama dengan 22, yaitu 1 + 21.
Operator pengurangan/penambahan belakang
Ada dua operator yang diambil langsung dari C (dan Java), yaitu operator pengurangan belakang dan penambahan belakang.
Operator pengurangan belakang juga menambahkan nilai 1, dengan format menempatkan dua tanda penambahan (++) di belakang variabel:
var iNum = 10; iNum++;
Tidak mengecewakan, operator pengurangan belakang juga mengurangi nilai 1, dengan format menambahkan dua tanda pengurangan (--) di belakang variabel:
var iNum = 10; iNum--;
Baris kedua kode mengurangi nilai iNum menjadi 9.
Beberapa operator prefiks berbeda dengan operator belakang, operator belakang dilakukan penambahan atau pengurangan setelah menghitung ekspresi yang mengandungnya. Dengan contoh berikut:
var iNum = 10; iNum--; alert(iNum); // keluaran "9" alert(iNum--); // keluaran "9" alert(iNum); // keluaran "8"
Seperti contoh operator prefiks, baris kedua kode menjalankan operasi pengurangan iNum, baris ketiga menampilkan hasilnya ("9"). Baris keempat melanjutkan menampilkan nilai iNum, tetapi kali ini operasi pengurangan dilakukan dalam satu pernyataan. Karena operasi pengurangan dilakukan setelah menghitung ekspresi, jadi angka yang ditampilkan adalah "9". Setelah melaksanakan baris kelima, fungsi alert menampilkan "8", karena setelah melaksanakan baris keempat dan sebelum melaksanakan baris kelima, operasi pengurangan belakang dilakukan.
Dalam ekspresi aritmetik, prioriti operator pengurangan dan penambahan belakang adalah sama, jadi perhitungan harus dilakukan dari kiri ke kanan. Contoh:
var iNum1 = 2; var iNum2 = 20; var iNum3 = iNum1-- + iNum2++; // berset ke "22" var iNum4 = iNum1 + iNum2; // berset ke "22"
在前面的代码中,iNum3 等于 22,因为表达式要计算的是 2 + 20。变量 iNum4 也等于 22,不过它计算的是 1 + 21,因为增量和减量运算都在给 iNum3 赋值后才发生。
一元加法和一元减法
大多数人都熟悉一元加法和一元减法,它们在 ECMAScript 中的用法与您高中数学中学到的用法相同。
一元加法本质上对数字无任何影响:
var iNum = 20; iNum = +iNum; alert(iNum); //输出 "20"
这段代码对数字 20 应用了一元加法,返回的还是 20。
尽管一元加法对数字无作用,但对字符串却有有趣的效果,会把字符串转换成数字。
var sNum = "20"; alert(typeof sNum); //输出 "string" var iNum = +sNum; alert(typeof iNum); //输出 "number"
这段代码把字符串 "20" 转换成真正的数字。当一元加法运算符对字符串进行操作时,它计算字符串的方式与 parseInt() 相似,主要的不同是只有对以 "0x" 开头的字符串(表示十六进制数字),一元运算符才能把它转换成十进制的值。因此,用一元加法转换 "010",得到的总是 10,而 "0xB" 将被转换成 11。
另一方面,一元减法就是对数值求负(例如把 20 转换成 -20):
var iNum = 20; iNum = -iNum; alert(iNum); //输出 "-20"
与一元加法运算符相似,一元减法运算符也会把字符串转换成近似的数字,此外还会对该值求负。例如:
var sNum = "20"; alert(typeof sNum); //输出 "string" var iNum = -sNum; alert(iNum); //输出 "-20" alert(typeof iNum); //输出 "number"
在上述代码中,一元减法运算符将把字符串 "-20" 转换成 -20(一元减法运算符对十六进制和十进制的处理方式与一元加法运算符相似,只是它还会对该值求负)。
- 上一页 Tipe Referensi ECMAScript
- 下一页 位运算符