Rumah  >  Artikel  >  hujung hadapan web  >  Pimpin semua orang untuk mempelajari konsep asas asas javascript (1)_kemahiran javascript

Pimpin semua orang untuk mempelajari konsep asas asas javascript (1)_kemahiran javascript

WBOY
WBOYasal
2016-05-16 15:30:231044semak imbas

Katalog Kajian

1. Jenis data

Jenis data

2

Pengendali kenaikan dan pengurangan:


operator bit:

Pengendali Boolean:
Operator aditif:
Pengendali kesaksamaan

3.

kenyataan untuk masuk
pernyataan label

1. Jenis data

Jenis data


Jenis data asas (lima jenis)

Tidak ditentukan

Batal
Boolean
Nombor
Rentetan

Jenis data kompleks (satu jenis)

Objek

Tidak ditentukan: Terdapat hanya satu nilai yang tidak ditentukan (ditakrifkan tetapi tidak ditetapkan).

Contoh:

var str;alert(str);//undefined

Nota: Jika ia tidak diisytiharkan dengan var, pengecualian akan dilaporkan jika digunakan secara langsung (... tidak ditakrifkan).

Cadangan: Berikan nilai awal pada setiap perisytiharan var, yang boleh mengurangkan banyak situasi yang tidak dijangka.

Contohnya:

var str;var str2="Zhang San";str = str str2;alert(str);//Ia bukan "Zhang San" yang kami jangkakan

Nol: sedikit

Boolean: Terdapat hanya dua nilai literal: benar dan salah.

Sebarang jenis data boleh ditukar kepada jenis Boolean melalui fungsi Boolean().

String: aksara bukan kosong=>true Watak kosong=>palsu

Nombor: mana-mana bukan sifar =>benar 0 dan NaN=>salah
Objek: sebarang objek=>true null=>false
Undefined          undefined=>false

Contohnya:

var str = Boolean(NaN);var str2 = Boolean("Zhang San");var str3 = Boolean(undefined);alert(str " " str2 " " str3); Dalam kes ini, kami akan melakukan penukaran Boolean yang sepadan secara automatik apabila menggunakan pernyataan if.

Rentetan: sedikit
if (str) {
  //str只要是非空字符、任何非零数字、任何非null对象 都是true
  //str只要是空字符、0、NaN、null、undefined 都是false
  //这样就省去了 我们一个个的判断了
  alert("true");
}

2. Operator

Pengendali kenaikan dan pengurangan:

【 nombor, --bilangan, nombor, nombor--】

var umur = 3, umur2 = 3;umur2;makluman(umur " " umur2);

var umur = 3, umur2 = 3,num1 ,num2;num1 = umur 1;num2 = umur2 1;alert(num1 " " num2);

Baiklah, inilah perbezaannya. Satu masih 4, dan satu lagi menjadi 5. Mengapa ini berlaku? Keutamaan hanya berbeza Age mula-mula melaksanakan operator dan kemudian menambah 1 pada dirinya sendiri dan kemudian menambah 1 melalui operator.

[Bitwise NOT (~), bitwise AND (&), bitwise OR (|), bitwise XOR (^), left shift (96edb70375b4ec5e4d35a679c910ffaa>), unsigned right shift (>>>)】

Sebenarnya, kita jarang menggunakannya dalam kehidupan seharian, jadi mari kita pelajari serba sedikit di sini.

Contoh: bitwise bukan var num1 = 25; // Binari 000000000000000000000000011001

var num2 = ~num1; // Binari 11111111111111111111111111100110

makluman(nombor2); // -26

Contoh: Bitwise DAN



Contoh: Bitwise XOR

var result = 25 & 3;
alert(result); //1
//*********************
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
AND = 0000 0000 0000 0000 0000 0000 0000 0001 

Contoh: Bergerak ke kiri

var result = 25 ^ 3;
alert(result); //26
//*************
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
XOR = 0000 0000 0000 0000 0000 0000 0001 1010 //十进制值 26
Contoh: Syif kanan yang ditandatangani

var oldValue = 2; // 等于二进制的 10
var newValue = oldValue << 5; // 等于二进制的 1000000,十进制的 64
Contoh: anjakan kanan yang tidak ditandatangani (perbezaan ini agak besar, kerana nilai 1 yang mewakili nombor negatif di kedudukan ke-32 juga dialihkan)

var oldValue = 64; // 等于二进制的 1000000
var newValue = oldValue >> 5; // 等于二进制的 10 ,即十进制的 2 
Pengendali Boolean:

【Logik BUKAN (!), logik DAN (&&), logik ATAU (||)】
var oldValue = -64; // 等于二进制的 11111111111111111111111111000000
var newValue = oldValue >>> 5; // 00000111111111111111111111111110 等于十进制的 134217726
Apa yang perlu dinyatakan di sini ialah && dan || adalah operasi litar pintas. ||Jika yang sebelumnya memenuhi syarat, syarat berikutnya tidak akan diuji && Sebaliknya, jika yang sebelumnya tidak memenuhi syarat, syarat berikutnya tidak akan dikesan.
Contoh:

测试:

 

这里可以告诉大家一个小小的技巧,很多时候我们并不知道某个变量是否有值,但是我们又需要正常使用,那么我们可以给个备胎。

如:浏览器的兼容问题,在旧式浏览器中是用window.event来取事件的相关属性值,新式浏览器中是直接通过形参的形式传过来的。我们就可以。

function myonclick(ev) {
  var myevent = ev || window.event;//这样就可以保证新旧浏览器的兼容了
}

实验:  

 

加性操作符:

【加法(+)、减法(-)】

这个再熟悉不过了,不过还是有一点需要注意。

var strnum1 = "5";
var num2 = strnum1 + 3;
var num3 = strnum1 - 3;
alert("num2="+num2+" num3="+num3);//这里会是什么结果呢?

Mari kita uji.

Mengapa ini berlaku? Tambahkan rentetan dan nombor, dan nombor akan ditukar kepada rentetan. Rentetan dan nombor ditolak, dan rentetan ditukar kepada nombor.

Pengendali kesaksamaan

Pelik, kenapa rentetan sama dengan nombor. Ya, transformasi automatik digunakan di sini. Tetapi bagaimana jika kita tidak mahu melihat keputusan sedemikian?

var num1 = "5";var num2 = 5;var isEqual = num1===num2;alert("Adakah num1 sama dengan num2:" isEqual);

Ya, kita boleh gunakan === semua sama. Bukan sahaja membandingkan nilai, tetapi juga jenis.

3. Penyata

kenyataan untuk masuk Pernyataan gelung for banyak digunakan, tetapi for-in mungkin kurang kerap digunakan. (Gelung For-in hendaklah digunakan untuk melintasi objek bukan tatasusunan. Menggunakan for-in untuk gelung juga dipanggil "penghitungan".) Contoh:

var obj = {id:2,name:"Zhang San"};var str = "";for(o in obj){ str = "Attribute: " o " Value: " obj[o] " ";}makluman(str);

penyataan label

Pernahkah kita ingin melompat keluar daripada tahap kedua gelung dalam berbilang gelung bersarang? Secara amnya kita hanya boleh menggunakan break atau terus melompat keluar dari gelung paling dalam, atau kembali untuk melompat keluar dari keseluruhan fungsi. Apa yang saya tidak pernah jangkakan ialah terdapat juga pernyataan label yang boleh melompat keluar dari mana-mana gelung.

Contoh:

var num = 0;terluar:untuk (var i=0; i < 10; i ) { untuk (var j=0; j < 10; j ) { jika (i == 5 && j == 5) { pecah paling luar; } nombor ; }}makluman(nombor);

Okay, artikel pertama hampir selesai di sini. Akhir sekali, saya akan memberikan anda beberapa soalan yang menarik.


1. Mengapa 1=0.9999999999……

2. Mengapa amaran(0.1 0.2)//0.30000000000000004

3. Kenapa alert(0123 4)//87 Empat.

var obj1 = {}; obj1.name2 = "Zhang San";

var str1 = "test"; str1.name2 = "李思";
alert(obj1.name2 " " str1.name2);
//Apakah nilai pop timbul

5

var obj1 = { nama2: "111" };

var obj2 = obj1;
obj1.name2 = "222";
alert(obj2.name2);//Apa yang muncul di sini?
obj1 = { nama2: "333" };
alert(obj2.name2);//Apa yang muncul di sini?


Enam,


var fun = fungsi (num1) {
Jika (num1 <= 1) {
          kembali 1;
}
       lain {
            kembalikan num1 * fun(num1 - 1);

}

}
var fun2 = seronok;

seronok = fungsi () {

Pulangan 1;
}
alert(fun2(5));//Apa yang muncul di sini?


Saya masih mempunyai sedikit masa untuk memperkenalkan jenis data asas JavaScript kepada semua orang


Jenis data asas JavaScript termasuk 6 jenis: number/string/boolean/object/function/undefined.

 
jenis nombor 2.1

Jenis nombor digunakan untuk menyimpan nilai berangka. Ia menerangkan nilai titik terapung 64-bit. Tetapi Javascript tidak boleh mewakili semua nilai antara 0-2e64, kerana ia juga perlu mewakili bukan integer, termasuk nombor kompleks, pecahan, dll. Untuk 64-bit, 11 bit diperlukan untuk menyimpan bahagian perpuluhan nombor, dan 1 bit digunakan untuk mewakili tanda, jadi JavaScript sebenarnya boleh mewakili nilai antara -2e52 dan 2e52.  

Jenis rentetan 2.2

Jenis rentetan digunakan untuk mewakili teks Anda boleh menggunakan petikan tunggal atau petikan berganda untuk memasukkan teks Sebarang simbol yang diletakkan dalam petikan akan dianggap sebagai rentetan, tetapi simbol khas mungkin perlu dilepaskan.  

jenis boolean 2.3

Jenis boolean hanya termasuk dua nilai: benar dan salah. Kita boleh menggunakan pelbagai ungkapan boolean dalam program untuk mendapatkan benar atau palsu untuk melaksanakan pemprosesan cawangan perniagaan yang berbeza. Kita boleh memasukkan berbilang syarat dalam ungkapan, dan syarat boleh menjadi DAN atau TIDAK Apabila mengira, keutamaan adalah seperti berikut: || mempunyai keutamaan paling rendah, diikuti oleh &&, dan kemudiannya ada pengendali lain (cth!).

  和其他许多语言一样,对于&&来说,当前面的条件为false时,后面的条件不再计算,对于||来说,当前面的条件为true时,后面的条件不再计算。

  来看下面的例子:

function conditionTest(){
   var a = ;
   var b = ;
   var c = {"key":"old"};
   print(c["key"]);
   if (a==) print("a = ");
   if (a== && b==) print("a == && b == ");
   if (a== || changeValue(c)) print(c["key"]);
   if (a== && changeValue(c)) print(c["key"]);
 }
 function changeValue(obj){
   obj["key"] = "changed";
   return true;
 }

  它的输出结果如下:

old
a = 1
a == 1 && b == 1
old
changed

  可以看出,在使用||时,没有调用changeValue方法。

  2.4 undefined类型

  当我们声明了一个变量,但是没有对其赋值时,它就是undefined的,就像下面这样

 var b;
 print(b);

  在Javascript中,还有一个和undefined类似的值:null。undefined表示“变量已声明但是没有复制”,null表示“变量已赋值但为空”,需要注意的是undefined==null的值为true。

  2.5 类型转换

  我们在上面提到了undefined == null的值是true,但我们使用typeof操作时可以发现,null是object类型,这说明在比较的过程中,发生了类型转换。

  类型转换是指将一种类型的值转换成另外一种类型的值。我们使用==进行比较时,会有类型转换,我们可以使用===来禁止类型转换。

  来看下面的例子:

function convertTypeTest(){
   var a = ;
   var b = "";
   print ("a:" + a);
   print ("b:" + b);
   print ("type of a:" + typeof a);
   print ("type of b:" + typeof b);
   print ("a==b:" + (a == b));
   print ("a===b:" + (a === b));
   print ("a===Number(b):" + (a === Number(b)));
   print ("String(a)===b:" + (String(a) === b));
   print ("type of undefined:" + typeof undefined);
   print ("type of null:" + typeof null);
   print ("undefined==null:" + (undefined == null));
   print ("undefined===null:" + (undefined === null));
 }

  输出结果如下:

a:1
b:1
type of a:number
type of b:string
a==b:true
a===b:false
a===Number(b):true
String(a)===b:true
type of undefined:undefined
type of null:object
undefined==null:true
undefined===null:false

可以很明显看到==和===的区别。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn