成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript基礎(chǔ)

XFLY / 2941人閱讀

摘要:一彈窗和輸出執(zhí)行順序是從上到下執(zhí)行控制瀏覽器彈出一個(gè)警告框讓計(jì)算機(jī)在頁面中輸出一個(gè)內(nèi)容在中寫一個(gè)內(nèi)容寫可以向中輸出一個(gè)內(nèi)容看我出不出來向控制臺(tái)輸出一個(gè)內(nèi)容作用是向控制臺(tái)輸出一個(gè)內(nèi)容你猜我在哪出來二編寫位置可以將代碼編寫到外部文件中,然后通過

一.彈窗和輸出

  **javascript執(zhí)行順序是從上到下執(zhí)行**

1.控制瀏覽器彈出一個(gè)警告框

alert("HelloWord");

2.讓計(jì)算機(jī)在頁面中輸出一個(gè)內(nèi)容在 document中寫一個(gè)內(nèi)容 (write寫)

 document.write();  可以向body中輸出一個(gè)內(nèi)容
 document.write("看我出不出來···");

3.向控制臺(tái)輸出一個(gè)內(nèi)容

console.log();  作用是向控制臺(tái)輸出一個(gè)內(nèi)容 
console.log("你猜我在哪出來");  

二 .js編寫位置

1.可以將js代碼編寫到外部js文件中,然后通過script標(biāo)簽引入
寫到外部文件中可以在不同的頁面中同時(shí)引用,也可以利用到瀏覽器的緩存機(jī)制
推薦使用方法
2.script標(biāo)簽一旦用于引入外部文 件了,內(nèi)部就不能再編寫代碼了,即使編寫了
瀏覽器也會(huì)忽略
如果需要可以在創(chuàng)建一個(gè)新的script標(biāo)簽用于編寫內(nèi)部代碼

  

   

3.可以將js代碼編寫到標(biāo)簽的onclick屬性中
當(dāng)我們點(diǎn)擊按鈕時(shí),js代碼才會(huì)執(zhí)行
雖然可以寫在標(biāo)簽的屬性中,但是他們屬于結(jié)構(gòu)與行為耦合,不方便維護(hù)

     

可以將js代碼寫在超鏈接的href屬性中,這樣當(dāng)點(diǎn)擊超鏈接時(shí),會(huì)執(zhí)行js代碼

     你也點(diǎn)我一下
     
     你也點(diǎn)我一下

三.基本語法

1.js注釋(/**/)
多行注釋,注釋中的內(nèi)容不會(huì)被執(zhí)行,但是可以在源代碼中查看
要養(yǎng)成良好的編寫注釋的習(xí)慣,也可以通過注釋來對代碼進(jìn)行一些簡單的調(diào)試
2.單行注釋(//)
3.JS中嚴(yán)格區(qū)分大小寫
4.JS中每一條語句以分號(hào)(;)結(jié)尾
-如果不寫分號(hào),瀏覽器會(huì)自動(dòng)添加,但是會(huì)消耗一些系統(tǒng)資源

    而且有點(diǎn)時(shí)候?yàn)g覽器會(huì)加錯(cuò)分號(hào)

5.JS中會(huì)忽略多個(gè)空格和換行,所以我們可以利用空格和換行對代碼進(jìn)行格式化

四.字面量和變量

1.字面量都是一些不可改變的值

   比如:1 2 3 4 5
   字面量都是可以的直接使用,但是我們一般都不會(huì)直接使用字面量

變量 變量可以用來保存字面量,而且我們一般都不會(huì)直接使用字面量

   變量更加方便我們使用,所以在開發(fā)中都是通過變量去保存一個(gè)字面量
   而很少直接使用字面量
   可以通過變量對字面量進(jìn)行描述

   變量  字面量
     x  =  1

2.把聲明變量和對該變量賦值一次完成:

var mood(心情) = "happy",age = "22";

3.變量名允許包含字母、數(shù)字、美元符號(hào)和下劃線(但第一個(gè)字符不允許是數(shù)字)。為了讓比較長的變量名更容易閱讀,可以在變量名中的適當(dāng)位置插入下劃線,就像這面這樣:

   var my_mood = "happy";  

五、標(biāo)識(shí)符

-在js中所有的可以由我們自主命名的都可以稱為標(biāo)識(shí)符
-例如:變量名,函數(shù)名,屬性名都屬于標(biāo)識(shí)符
-命名一個(gè)標(biāo)識(shí)符時(shí)需要遵守如下的規(guī)則:

   1.標(biāo)識(shí)符中可以含有字母、數(shù)字、_、$
   2.標(biāo)識(shí)符不能以數(shù)字開頭
   3.標(biāo)識(shí)符不能是ES中的關(guān)鍵字或保留字
   4.標(biāo)識(shí)符一般都采用駝峰命名法 
     通常駝峰法格式是函數(shù)名、方法名和對象屬性名命名的首選格式
          -首字母小寫,每個(gè)單詞的開頭字母大寫,其余字母小寫
           helloworld       駝峰命名法:helloWorld
           var myMood = "happy";
           
--注意:js底層保存標(biāo)識(shí)符是實(shí)際上是采用的Unicode編碼,
       所以理論上講,所有的utf-8中含有的內(nèi)容都可以作為標(biāo)識(shí)符   


a標(biāo)識(shí)符  自己起的名字
 var a = 1;
 
可以含有字母、數(shù)字、_、$ 
var a_1_$ = 123;
console.log(a_1_$);   //輸出為123

標(biāo)識(shí)符不能是ES中的關(guān)鍵字或保留字
    ES 
var var = 123;
console.log(var);    //會(huì)報(bào)錯(cuò)

注意:

var 鋤禾日當(dāng)午 = 789;       //千萬不要這么用
console.log(鋤禾日當(dāng)午); 

六、字符串

1.數(shù)據(jù)類型指的就是字面量的類型

在js中一共有六中數(shù)據(jù)類型
  String      字符串    "123" 
  Number      數(shù)值      123
  Boolean     布爾值     true或是false   
  Null        空值    
  Undefined   未定義
  Object      對象 

其中String Number Boolean Null Undefined 屬于基本數(shù)據(jù)類型
而Object 屬于引用數(shù)據(jù)類型

2.String字符串

 1.-字符串由零個(gè)或多個(gè)字符構(gòu)成,字符包括(但不限制)字母、數(shù)字、標(biāo)點(diǎn)符號(hào)和空號(hào)
  -在js中字串符需要使用引號(hào)引起來
  -使用雙引號(hào)或單引號(hào)都可以,但是不要混著用
  -引號(hào)不能嵌套,雙引號(hào)不能放雙引號(hào),單引號(hào)不能放單引號(hào),
                單引號(hào)里面可以放雙引號(hào),雙引號(hào)里面可以放單引號(hào)


2.在字符串中我們可以使用作為轉(zhuǎn)義字符,
    當(dāng)表示一些特殊符號(hào)時(shí)可以使用進(jìn)行轉(zhuǎn)義
    "" 表示 "" 
    "" 表示 ""
    
  表示換行
    	  表示制表符(空格)
      表示

    str ="我說:"今天
天氣真不錯(cuò)""; 
  
    str=""
 
   //輸出字面量 字符串str     
    alert("str");
    //輸出變量str  
    alert(str);
            

3.如果想在上面這條語句中使用單引號(hào),就必須保證字母“n”和“t”之間的單引號(hào)能別當(dāng)成這個(gè)字符串的一部分,這種情況下這個(gè)單引號(hào)需要被看做一個(gè)普通字符,而不是這個(gè)字符串的結(jié)束標(biāo)志,這種情況我們需要對這個(gè)字符進(jìn)行轉(zhuǎn)義,在js里用反斜線對字符串進(jìn)行轉(zhuǎn)義:

  
  var mood = "don"t ask";
  

4.類似地,如果想用雙引號(hào)來包住一個(gè)本身就包含雙引號(hào)的字符串,就必須用反斜線對字符串中的雙引號(hào)進(jìn)行轉(zhuǎn)義:

 
 var height = "about 5"10" tall";
 alert(height);

會(huì)彈出下面:

七、Number

1.在js中所有的數(shù)值都是Number類型
如果想給一個(gè)變量賦一個(gè)數(shù)值,不用限定它必須是一個(gè)整數(shù),js允許使用帶點(diǎn)小數(shù)點(diǎn)的數(shù)值,并且允許任意位小數(shù),這樣的數(shù)稱為浮點(diǎn)數(shù)

var age = 33.25;

也可以使用負(fù)值,在有關(guān)數(shù)值的前面加上一個(gè)減號(hào)(-)表示它是一個(gè)負(fù)數(shù):

var temperture = -20;

js也支持負(fù)數(shù)浮點(diǎn)數(shù)

var temperture = -20.690; 

包括整數(shù)和浮點(diǎn)數(shù)(小數(shù))

//數(shù)字123
 var a = 123;
//字符串123
var a = "123";
console.log(typeof a);


   /*
    *  可以使用一個(gè)運(yùn)算符typeof
    *        來檢查一個(gè)變量的類型
    *  語法:typeof 變量
    * 檢查數(shù)值時(shí),會(huì)返回number
    *  檢查字符串時(shí),會(huì)返回string
   */  
   

2.js中可以表示的數(shù)字的最大值 (最大值:1.7976931348623157e+308)

 Number.MAX_VALUE 
     1.7976931348623157e+308
 Number.MIN_VALUE   大于0的最小值
     5e-324    (0.后面的三百位數(shù))
     

   console.log(Number.MAX_VALUE); //會(huì)輸1.7976931348623157e+308

   a = Number.MAX_VALUE*Number.MAX_VALUE;

   a = "abc" * "bcd"    //會(huì)輸出NaN

   a = NaN;      //不加引號(hào)  輸出number     加了會(huì)輸出string
   
   a = Number.MIN_VALUE;   //會(huì)輸出Infinity

   console.log(a);     
  
 

3.如果使用Number表示的數(shù)字超過了最大值,則會(huì)返回一個(gè)Infinity

Infinity  表示正無窮 
-Infinity  表示正無窮
使用typeof檢查Infinity也會(huì)返回Number 

NaN 是一個(gè)特殊的數(shù)字,表示Not A Number

使用typeof檢查NaN也會(huì)返回Number

 
  // 在js中整數(shù)的運(yùn)算基本可以保證精確
  var c = 1+1;      
    //如果使用js進(jìn)行浮點(diǎn)運(yùn)算,可能得到一個(gè)不精確的結(jié)果
    //所以千萬不要使用js進(jìn)行對精確度要求比較高的運(yùn)算
  var c = 0.1 + 0.2;
  console.log(c);  



八、布爾值

Boolaen 布爾值
布爾值只有倆個(gè),主要用來做邏輯判斷
true -表示真
false -表示假
使用typeof檢查一個(gè)布爾值時(shí),會(huì)返回boolean

var bool = true;
console.log(typeof true);


九、Null和Undefined

1.Null類型的值只有一個(gè),就是 Null

 null這個(gè)值專門用來表示一個(gè)為空的對象
 使用typeof檢查一個(gè)null時(shí),會(huì)返回object
 

2.Undefined(未定義)類型的值只有一個(gè),就undefined

 當(dāng)聲明一個(gè)變量,但是并不給變量賦值時(shí),它的值就是undefined
 使用typeof檢查一個(gè)undefined時(shí)也會(huì)返回undefined 
   
       var a = null;
       console.log(typeof a);       //會(huì)輸出object
       
       var b;
       console.log(b);    //會(huì)輸出undefined
 

十、強(qiáng)制類型轉(zhuǎn)換-string

1.強(qiáng)制類型轉(zhuǎn)換

 - 指將一個(gè)數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為其他的數(shù)據(jù)類型  
 - 類型轉(zhuǎn)換主要指,將其他的數(shù)據(jù)類型,轉(zhuǎn)換為 
         String   Number   Boolean 
         
               

將其他類型轉(zhuǎn)換為String
方式一:

 - 調(diào)用被轉(zhuǎn)換數(shù)據(jù)類型的toString()方法
 - 該方法不會(huì)影響到原變量,它會(huì)將轉(zhuǎn)換的結(jié)果返回

    -但是要注意:null和 undefined這倆個(gè)值沒有toString()方法
               如果調(diào)用他們的方法會(huì)報(bào)錯(cuò)     
                   
     var a = 123;
      //調(diào)用a的toString()方法
     //調(diào)用xxx的yyy()方法,就是xxx.yyy()
     var a = a.toString();
     console.log(a);
     
     var a = true;              //先寫一個(gè)類型
     // var a = a.toString();      //在寫a.toString()  可以轉(zhuǎn)
     console.log(a);
     
     a = null;             //空值
     // a = a.toString();      //不能轉(zhuǎn)  會(huì)報(bào)錯(cuò)
    console.log(a);
    
    a = undefined;
   // a = a.tostring();     //不能轉(zhuǎn)    會(huì)報(bào)錯(cuò)
    console.log(a);

方式二:

 -調(diào)用 String()函數(shù),并將轉(zhuǎn)換的數(shù)據(jù)作為參數(shù)傳遞給函數(shù)
 -使用String()函數(shù)做強(qiáng)制類型轉(zhuǎn)換時(shí)
       對于 Number 和 Boolean實(shí)際上調(diào)用的就是toString()方法 
       但是對于null 和 undefined就不會(huì)調(diào)用toString()方法 
             它會(huì)將(字面量)null直接轉(zhuǎn)換為(字符串)"null"
             它會(huì)將(字面量)undefined直接轉(zhuǎn)換為(字符串)"undefined"
             
            a = 123;
            //調(diào)用tostring()函數(shù),來將a轉(zhuǎn)換為字符串   (轉(zhuǎn)誰就把誰寫在括號(hào)里面)
           a = String(a);     //S一定要大寫

           a = null;
           a = String(a);    //不會(huì)報(bào)錯(cuò)

           a =  undefined;
           a = String(a);    //不會(huì)報(bào)錯(cuò)
          console.log(typeof a);
          console.log(a); 



十一、強(qiáng)制類型轉(zhuǎn)換-Number

1.將其他的數(shù)據(jù)轉(zhuǎn)換為Number

 轉(zhuǎn)換方法一:
        使用Number()函數(shù)
              -字符串-->(轉(zhuǎn)換)數(shù)字
                  1.如果是純數(shù)字的字符串,則直接將其轉(zhuǎn)換為數(shù)字      
                  2.如果字符串中有非數(shù)字的內(nèi)容,則轉(zhuǎn)換為NaN
                  3.如果字符串是一個(gè)空串或者是一個(gè)全是空格的字符串,則轉(zhuǎn)換為0
              -布爾(boolean)-->(轉(zhuǎn)換)數(shù)字
                   true 轉(zhuǎn)換為1
                   false 轉(zhuǎn)換為0  
                   -Null-->數(shù)字==0 
                   -undefined-->數(shù)字==NaN  
 //轉(zhuǎn)換方式一: 
 var a = "123";   
 //調(diào)用Number()函數(shù)來將a轉(zhuǎn)換為Number類型
 a = Number(a);     //括號(hào)里面要寫數(shù)值

 a = true;           //true的類型是boolean
 a = Number(a);       //  輸出為1

 a = false;          //false的類型是boolean 
 a = Number(a);       //  輸出為0

 a = null;
 a = Number(a);       //  輸出為0

 a = undefined;
 a = Number(a);       //  輸出為NaN
    

轉(zhuǎn)換方式二:

    -這種方式專門用來對付字符串
    -parseInt()把一個(gè)字符串轉(zhuǎn)換為一個(gè)整數(shù)
    -parseFloat() 把一個(gè)字符串轉(zhuǎn)換為一個(gè)浮點(diǎn)  
 
//轉(zhuǎn)換方式二:
 a = "123px";
 //調(diào)用parseInt()函數(shù)將a轉(zhuǎn)換為Number
 /*
    parseInt()可以將一個(gè)字符串中的有效的整數(shù)內(nèi)容取出來,(px不是數(shù)字所以不讀,就只剩下數(shù)字)
    然后轉(zhuǎn)換為Number
    (如果第一個(gè)是英文字母 轉(zhuǎn)換的就是NaN(包括點(diǎn).也在內(nèi) .以后的東西也不讀))
 */
 a = parseInt(a);

/*
parseFloat()作用和parseInt()類似,不同的是它可以獲得有效的小數(shù)
*/
 a = "123.456px";
 a = parseFloat(a);      //輸出123.456

/*
  如果對非String使用parseInt()或parseFloat()
  它會(huì)現(xiàn)將其轉(zhuǎn)換為String然后再操作
*/
 a = true;
//  a = parseInt(a);        //  輸出為NaN
a = parseFloat(a);

 console.log(typeof a);
 console.log(a); 

十二、其他進(jìn)制的數(shù)字

1.在js當(dāng)中,如果需要表示16進(jìn)制的數(shù)字,則需要以0x開頭

       如果需要表示8進(jìn)制的數(shù)字,則需要以0開頭
       如果需要表示2進(jìn)制的數(shù)字,則需要以0b開頭,但是不是所有的瀏覽器都支持
       
 //16進(jìn)制數(shù)字
 a = 0xDD;    
 //8進(jìn)制數(shù)字
 a = 056;
 //2進(jìn)制數(shù)字
 a = 0b10;
 console.log(a);
 
 var height = "about 5"10" tall";
 alert(height);
 

十三、轉(zhuǎn)換為boolean

將其數(shù)據(jù)類型轉(zhuǎn)換為boolean

      一種方法:使用boolean()函數(shù)
                -數(shù)字--->布爾
                 除了0和NaN,其余的都是true

                -字符串--->布爾
                 除了空串,其余的都是true

                -null和undefined都會(huì)轉(zhuǎn)換為false
                
                -對象也會(huì)轉(zhuǎn)換為true
                
                
   var a =123;  //輸出為true
   a = -123;  //輸出為true
   a = 0;     //輸出為fals
   a = Infinity;   //輸出為true   Infinity無窮
   a = NaN;   //輸出為true 

  //調(diào)用Boolean()函數(shù)來將a轉(zhuǎn)換為布爾值
  a = Boolean(a);

  a = "hello";              //本身輸出為string  
  a = boolean(a);           //加上boolean()以后輸出為true

  a = "flase";
  a = boolean(a);            //輸出為true

  a = "null";
  a = boolean(a);            //輸出為flase
  
  console.log(typeof a);
  console.log(a);



十四、算數(shù)運(yùn)算符

1.運(yùn)算符也叫操作符

通過運(yùn)算符可以對一個(gè)或多個(gè)值進(jìn)行運(yùn)算,并獲取運(yùn)算結(jié)果
比如:tupeof就是運(yùn)算符,可以來獲得一個(gè)值得類型
     它會(huì)將該值的類型以字符串的形式返回
   number string boolean underfined objuct

2.算數(shù)運(yùn)算符

當(dāng)對非Number類型的值進(jìn)行運(yùn)算時(shí),會(huì)將這些值轉(zhuǎn)換為Number然后在運(yùn)算
    任何值和NaN做運(yùn)算都得NaN
+
  +可以對兩個(gè)值進(jìn)行加法運(yùn)算,并將結(jié)果返回
  如果對倆個(gè)字符串進(jìn)行加法運(yùn)算,則會(huì)做拼串
        會(huì)將倆個(gè)字符串拼接為一個(gè)字符串,并返回
  任何的值和字符串做加法運(yùn)算,都會(huì)先轉(zhuǎn)換為字符串,然后在和字符串做拼串的操作轉(zhuǎn)成字符串
—
  可以對兩個(gè)值進(jìn)行減法運(yùn)算,并將結(jié)果返回
  轉(zhuǎn)成number
*
  可以進(jìn)行乘法運(yùn)算
/
  可以進(jìn)行除法運(yùn)算
%
  %取模運(yùn)算(取余數(shù))

//加法例子:
var a = 123;

var result = typeof a;
console.log(typeof result);      //輸出為string

a + 1;            //輸出為123
result = a + 1;   //輸出為124
result = 35 + 35;   //輸出為70  
result = true + 35;  //輸出為36  
result = true + false;  //輸出為1  true為1  false為0
result = 2 + null;  //輸出為2  null為
result = 2 + NaN;  //輸出為NaN 
result = "123" + "456";  //輸出為123456    倆個(gè)字符串相加  數(shù)字連在一起
result = "鋤禾日當(dāng)午"       //如果想把詩寫的工整就這樣寫   也可以這樣寫"鋤禾日當(dāng)午,汗滴禾下土,誰知盤中餐,粒粒皆辛苦"
            +"汗滴禾下土"+
            "誰知盤中餐"+
            "粒粒皆辛苦";
result = 123 + "hello";      //輸出為123hello
//任何值和字符串相加都會(huì)轉(zhuǎn)換為字符串,并做拼串操作

console.log(result);  

//number轉(zhuǎn)換為string
/*
  我們可以利用這一點(diǎn),來將一個(gè)任意的數(shù)據(jù)類型轉(zhuǎn)換為string
  我們只需要為任意的數(shù)據(jù)類型加一個(gè)""即可將其轉(zhuǎn)換為string
  這是一種隱式的類型轉(zhuǎn)換,由瀏覽器自動(dòng)完成,實(shí)際上它也是調(diào)用string()函數(shù)
*/
var c = 123;
c = c + "h";

console.log(typeof c); 
console.log(c);
console.log("c = " +c);      //輸出為c=123h

//小練習(xí)
result = 1 + 2 + "3";   //輸出為33  1+2=3   字符串相拼  33 
console.log("result="+result);      //輸出為 result=33

result = "45" + 2 + 3;     //輸出為4523
console.log(result);  


//減法例子: 
  result = 100 - 5;    //輸出為result =95
  result = 100 - true;  //輸出為99    true為1 
  result = 100 - "1";    //輸出為99   把"1"轉(zhuǎn)換為number 1    相當(dāng)于100-1

  console.log("result = "+result);

//乘法例子
  result = 2 * 2;  //輸出為result=4
  result = 2 * "8";  //輸出為result=16
  result = 2 * undefined;  //輸出為result=NaN
  result = 2 * null;  //輸出為result=0       null=0  

  console.log("result = "+result);

 //除法例子
  result = 4 / 2;  //輸出為result=2
  result = 3 / 2;  //輸出為result=1.5

/*
  任何值做- * / 運(yùn)算時(shí)都會(huì)自動(dòng)轉(zhuǎn)換為Number
    我們可以利用這一特點(diǎn)做隱式的類型轉(zhuǎn)換
       可以通過為一個(gè)值 —0 *1 /1 來將其轉(zhuǎn)換為Number
*/
  console.log("result = "+result);

  var d = "123";       
  d = d - 1;       //輸出為122

  console.log(typeof d);
  console.log(d);

//%例子
result = 9 % 3;      //9除以3  等于3余0  相除取余數(shù)    輸出為0
result = 9 % 4;      //9除以4  等于2余1  相除取余數(shù)    輸出為1

console.log("result = "+result);

十五、一元運(yùn)算符

  一元運(yùn)算符,只需要一個(gè)操作數(shù)
  +  正號(hào)
      -正號(hào)不會(huì)對數(shù)字產(chǎn)生任何影響  
  —  負(fù)號(hào)      
      -負(fù)號(hào)可以對數(shù)字進(jìn)行負(fù)號(hào)的取反

  —對于非number類型的值
     它會(huì)將先轉(zhuǎn)換為number,然后再運(yùn)算
     可以對一個(gè)其他的數(shù)據(jù)類型使用+,來將其轉(zhuǎn)換為number
     它的原理和number()函數(shù)一樣
     
     
  var a = 123;
  a = +a;         //輸出為123
  a = -a;         //輸出為-123

  console.log("a = "+a);

  a = true;    //   輸出為boolean    a = -1
  a =  -a;     // 輸出為number   a = -1

  a = "123";   // 輸出為 a = 123  string
  a = +a;      // 輸出為 a = 123  number

  console.log("a = "+a);
  console.log(typeof a);

  var result = 1 + +"2" + 3;    //輸出為6   +"2"字符串2轉(zhuǎn)換為number2   1+2+3=6

  console.log("result = "+result);



十六、自增和自減

自增++

 —通過自增可以使變量在自身的基礎(chǔ)上增加1
 —對于一個(gè)變量自增以后,原變量的值會(huì)立即自增1
 —自增分為倆種:后++(a++),前++(++a)
    無論是a++ 還是++a,都會(huì)立即使原變量的值自增1
    不同的是a++ 和 ++a的值不同  
    a++的值等于原變量的值  (自增前的值)
    ++a的值等于新值  (自增后的值)

自增--

—通過自減可以使變量在自身的基礎(chǔ)上減1
—自減分為倆種:后--(a--) 和 前--(--a) 
   無論是a--還是--a都會(huì)使原變量的值自減1 
   不同的是a-- 和 --a的值不同  
   a--的值等于原變量的值  (自增前的值)
   --a的值等于新值  (自增后的值) 

  
//自增例子
  var a = 1;
  //使a自增1
  a++;  //輸出為a=2
  ++a;  //輸出為a=2

  console.log("a = "+a); 

  var a = 1;
  console.log(a++);   //輸出為1

  var a = 1;
  console.log(++a);   //輸出為2

  var a = 1;
  console.log("++a = "+ ++a);  //輸出為++a=2
  console.log("a++ = "+ a++);  //輸出為++a=1
  console.log("a = "+a);   //輸出為a=2

  var c = 10;
  //第一次c++ 是在10的基礎(chǔ)上自增
  c++;
  //第二次c++ 是在11的基礎(chǔ)上自增
  c++;
  console.log(c++);

  var d = 20;   
  console.log(++d);   //輸出為21
  console.log(++d);   //輸出為22



//d++先用后加 ++d先加后用
  //d++=20 ++d=22 d=22      
  var d = 20; 
  var result = d++ + ++d + d;
  console.log("result ="+result);  //輸出為result =64

  var d = 30;
  var result = ++d + d++ + d;
              //31   32    31
  console.log("result ="+result);  //輸出為result =94

  var d = 30;
  d = d++;
  /*
     相當(dāng)于
     d=30
     var e = d++;
      d = e
  */
  console.log("d ="+d);  //輸出為d =30


//自減例子
  var num = 10;
  num--;  //輸出為num=9
  --num;   //輸出為num=9
  console.log("num ="+num); 

  var num = 10;
  console.log(num--);   //輸出為10
  console.log(--num);   //輸出為9


  var d = 10;
  result = num-- + --num + d;
  console.log("result ="+result);  //輸出為24

十七、自增練習(xí)

//d++先用后加 ++d先加后用

 var n1 = 10 , n2 = 20;

 var n = n1++; //n1 = 11 n1++ = 10
 console.log("n="+n);  //n=10
 console.log("n1="+n1);  //n1=11

 n = ++n1;   //n1=12 ++n1=12
 console.log("n="+n);  //n=12
 console.log("n1="+n1); //n1=12

 //d--先減后用  --d返回原值
 n = n2--;  //n2=19 n2--=20
 console.log("n="+n);  //n= 20
 console.log("n12="+n2); //n2=19

 n = --n2;  //n2=18 --n2=18
 console.log("n="+n);  //n=18
 console.log("n12="+n2); //n2=18

十八、邏輯運(yùn)算符

JS中為我們提供了三種邏輯運(yùn)算法

  ! 非
      — !可以用來對一個(gè)值進(jìn)行非運(yùn)算
      — 所謂非運(yùn)算就是值對一個(gè)布爾值進(jìn)行取反操作
         flas變etrue ,  true變flase
      — 如果對一個(gè)值進(jìn)行倆次取反,它不會(huì)變化
      — 如果對非布爾值進(jìn)行元素,則會(huì)將其轉(zhuǎn)換為布爾值,然后在取反
          所以我們可以利用該特點(diǎn),來將一個(gè)其他的數(shù)據(jù)類型轉(zhuǎn)換為布爾值
          可以為一個(gè)任意數(shù)據(jù)類型去倆次反,來將其轉(zhuǎn)換為布爾值
          原理和boolean()函數(shù)一樣

  $$ 與
      — &&可以對符號(hào)倆側(cè)的值進(jìn)行與運(yùn)算并返回結(jié)果
      — 運(yùn)算規(guī)則:
           — 倆個(gè)值中只要有一個(gè)值是flase就返回flase
             只有倆個(gè)值都是true時(shí),才會(huì)返回true
           — js中的“與”屬于短路的與
                如果第一個(gè)值為flase,則不會(huì)看第二個(gè)值

  || 或
        — ||可以對符號(hào)倆側(cè)的值進(jìn)行或運(yùn)算并返回結(jié)果
        —  運(yùn)算規(guī)則:
           — 倆個(gè)值中只有一個(gè)true,就返回true
               如果倆個(gè)值都是flase,才返回flase
           —js中的“或”屬于短路的或
               如果對一個(gè)值為true,則不會(huì)檢查第二個(gè)值

// !

var a = true;   
//對a進(jìn)行非運(yùn)算
!a;      //輸出為true
a = !a;     //輸出為flase   取反一次是flase
a = !!a;    //   取反二次是flase  

console.log("a ="+a);

var b = 10;  //輸出為number  
b = !b;   //輸出為boolean   b=false
b = !!b;   //輸出為boolean   b=true

console.log("b ="+b);
console.log(typeof b);

//   &&

//如果倆個(gè)值都是true則返回true
var result = true && true;   // 輸出為true
//只要有一個(gè)false就返回false
var result = true && false;   //輸出為false
var result = false && true;   //輸出為false
var result = false && false;   //輸出為false

console.log("result ="+result);

//第一個(gè)值為true,會(huì)檢查第二個(gè)值
// true && alert("看我出不出來!!");
//第一個(gè)值為false,不會(huì)檢查第二個(gè)值
// false && alert("看我出不出來!!");


//    ||

 //如果倆個(gè)值都是false則返回false
 resule = false || false;  //輸出為false
 //只要有一個(gè)true就返回true
 resule = true || false;   //輸出為true
 resule = false || true;   //輸出為true
 resule = true || true;   //輸出為true
 
 console.log("resule ="+resule);    

 //第一個(gè)值為false,則會(huì)檢查第二個(gè)值
 false || alert("123");  //會(huì)有彈窗
 //第一個(gè)值為true,則不會(huì)檢查第二個(gè)值
 true || alert("123");  //不會(huì)有彈窗



十九、非布爾值的非與或運(yùn)算

    && || 非布爾值的情況
       — 對于非布爾值進(jìn)行與或運(yùn)算時(shí)
           會(huì)向?qū)⑵滢D(zhuǎn)換為布爾值,然后在運(yùn)算,并且返回原值
    — 與運(yùn)算&&       
       — 如果第一個(gè)值為true,則必然返回第二個(gè)值
       — 如果第一個(gè)值為false,則直接返回第一個(gè)值

    — 或運(yùn)算 ||
       — 如果第一個(gè)值為true,則直接返回第一個(gè)值
       — 如果第一個(gè)值為false,則返回第二個(gè)值
       

 //  true && true
 // 與運(yùn)算:如果倆個(gè)值都為true,則返回后邊的值
 var  result = 1 && 2;  //輸出為2

 //與運(yùn)算:如果倆個(gè)值中有false,則返回靠前的false
 //false && true
 var result = 0 && 2;  //輸出為0
 var result = 2 && 0;  //輸出為0
 //false && false
 var result = NaN && 0;  //輸出為NaN
 var result = 0 && NaN;   //輸出為0


 // true || true
 //如果第一個(gè)值為true,則直接返回第一個(gè)值
 result = 1 || 2;  //輸出為1
 result = 2 || 1;  //輸出為2
 result = 2 || NaN;  //輸出為2
 
 //如果第一個(gè)值為false,則直接返回第二個(gè)值
 result = NaN || 1;  //輸出為1
 result = NaN || 0;  //輸出為0
 result = ""  || "hello";  //輸出為hello
 result = -1  || "你好";  //輸出為-1

 console.log("result ="+result);      


二十、賦值運(yùn)算符

=
可以將符號(hào)右側(cè)的值賦值給符號(hào)左側(cè)的變量

  var a = 123; 

+=

a += 5 等價(jià)于 a = a + 5

a -= 5 等價(jià)于 a = a - 5
*=
a = 5 等價(jià)于 a = a 5
/=
a /= 5 等價(jià)于 a = a / 5
%= (余數(shù))
a %= 5 等價(jià)于 a = a % 5

 var a = 10;
 a = a + 5;  //15
 a += 5;  //輸出為15   和a = a + 5;是一樣的
 a -= 5; //輸出為5  10-5=5
 a *= 5;//輸出為50  5*10=50
 a %= 3; //輸出為1  10除以3等于3余1


 console.log("10 ="+10);   
 
 

二十一、關(guān)系運(yùn)算符

關(guān)系運(yùn)算符
通過關(guān)系運(yùn)算符可以比較倆個(gè)值之間的大小關(guān)系

   如果關(guān)系成立它會(huì)返回true,如果關(guān)系不成立則返回false 
大于號(hào)
   — 判斷符號(hào)左側(cè)的值是否大于右側(cè)
   — 如果關(guān)系成立,返回 true,如果關(guān)系成立則返回 false
=  大于等于
   — 判斷符號(hào)左側(cè)的值是否大于或等于右側(cè)的值

< 小于號(hào)

  — 判斷符號(hào)左側(cè)的值是否小于右側(cè)
  — 如果關(guān)系成立,返回 true,如果關(guān)系成立則返回 false

<= 小于等于號(hào)

  — 判斷符號(hào)左側(cè)的值是否小于或等于右側(cè)的值

非數(shù)值的情況

—對于非數(shù)值進(jìn)行比較時(shí),會(huì)將其轉(zhuǎn)換為數(shù)字然后在比較 
— 特殊情況:
    如果符號(hào)倆側(cè)的值都是字符串時(shí),不會(huì)將其轉(zhuǎn)換為數(shù)字進(jìn)行比較
    而會(huì)分別比較字符串中字符的Unicode編碼
   
  var result = 5 > 10;  //輸出為false 不成立
  result = 5 > 4;   //輸出為true 成立
  resulr = 5 > 5;  //輸出為false 不成立
  resulr = 5 >= 5;  //輸出為true 成立
  result = 5 >= 4;   //輸出為true 成立

  result = 5 < 4;    //輸出為false不成立
  resulr = 4 <= 4;  //輸出為true 成立
 
  console.log("result ="+result);


  //非數(shù)值的情況
  console.log(1>true);  //false
  console.log(1>true);  //true
  console.log(1 > "0");  //true
  console.log(10 > null); //true null轉(zhuǎn)換為數(shù)字0
  
  //任何值和NaN做任何比較都是false
  console.log(10 <= "hello"); //false "hello"轉(zhuǎn)換為數(shù)字NaN
  console.log(true > false);  //

  //如果比較的倆個(gè)字符串型的數(shù)字,可能會(huì)得到不可預(yù)期的結(jié)果
  console.log("1" < "5");  //true
  console.log("11" < "5");  //true(比較第一位  1和5做比較)
  //注意:在比較倆個(gè)字符串型的數(shù)字時(shí),一定一定一定要轉(zhuǎn)型
  console.log("11" < +"5"); //false

  //比較倆個(gè)字符串時(shí),比較的是字符串的字符編碼
   console.log("a" < "b"); //true

   //比較字符編碼時(shí)是一位一位的進(jìn)行比較
   console.log("abc" < "a"); //true

   //如果倆位一樣,則比較下一位,所以借用它來對英文進(jìn)行排序 
   console.log("bbc" < "b"); //false 
   console.log("abd" < "bad") //true 
   //比較中文時(shí)沒有意義

   console.log("戒" > "我"); //true
      

二十二、Unicode編碼表

二十三、相等運(yùn)算符

  相等運(yùn)算==:
    相等運(yùn)算符用來比較倆個(gè)值是否相等
       如果相等會(huì)返回true,否則會(huì)返回false

    使用==來做相等運(yùn)算
      —當(dāng)使用==來比較倆個(gè)值時(shí),如果值的類型不同
         則會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,將其轉(zhuǎn)換為相同的類型
         然后再比較

   不相等運(yùn)算!=:
     不相等用來判斷倆個(gè)值是否不相等,如果不相等返回true,否則返回false
       — 使用!=來做不相等運(yùn)算
       — 不相等也會(huì)對變量進(jìn)行自動(dòng)的類型轉(zhuǎn)換,如果轉(zhuǎn)換后相等也會(huì)返回false 

    全等運(yùn)算===:
       — 用來判斷倆個(gè)值是否全等,它和相等類似,不同的是它不會(huì)做自動(dòng)的類型轉(zhuǎn)換
         如果來個(gè)值得類型不同,直接返回false

    不全等!== 
       — 用來判斷倆個(gè)值是否不全等,和不等類似,不同的是它不會(huì)做自動(dòng)類型轉(zhuǎn)換 
           如果來個(gè)值得類型不同,直接返回true  



 //相等運(yùn)算==

   console.log(1 == 1);  //輸出為true 
  
   var  a = 10;
   console.log(a == 4); //輸出為false 10不等于4

   console.log("1" == 1); //輸出為true  字符串1和數(shù)字1相等

   console.log(true == "1"); //輸出為true
   console.log(true == "hello"); //輸出為false

   console.log(null == 0);  //輸出為false
  
   console.log(nill == undefined); //輸出為true


   /*
      undefined 衍生自 null
      所以這倆個(gè)值做相等判斷時(shí),會(huì)返回true
   */
   console.log(unsefined == null); //輸出為true

    /*
      NaN不和任何值相等 包括他本身
    */
   console.log(NaN == "1");  //輸出為false

   var b = NaN;
   //NaN不和任何值相等 所以下面的這個(gè)方法行不通
  // console.log(b == NaN);  輸出為false
    /*
      可以通過isNaN()函數(shù)來判斷一個(gè)值是否是NaN
       如果該值是NaN則返回true,否則會(huì)返回false 
    */    
   console.log(isNaN(b));  //輸出為true

//不相等運(yùn)算!=

   console.log(10 != 5);  //輸出為true
   console.log(10 != 10);  //輸出為false
   console.log("abcd" != "abcd");  //輸出為false
   console.log("1" != 1); ////輸出為false

//全等運(yùn)算===

   console.log("123" === 123);  //輸出為false
   console.log(nill === undefined); //輸出為false

//不全等!== 

   console.log(1 !== "1"); //輸出為true     

二十四、條件運(yùn)算符

 條件運(yùn)算符也叫三元運(yùn)算符
    語法:
       條件表達(dá)式?語句1:語句2;
    — 執(zhí)行的流程:
        條件運(yùn)算符在執(zhí)行時(shí),首先對條件表達(dá)式進(jìn)行求值,
             如果該值為true,則執(zhí)行語句1,并返回執(zhí)行結(jié)果
             如果該值為false,則執(zhí)行語句2,并返回執(zhí)行結(jié)果  
        如果條件的表達(dá)式的求值結(jié)果是一個(gè)非布爾值,
          會(huì)將其轉(zhuǎn)換為布爾值然后在運(yùn)算   


二十五、運(yùn)算符的優(yōu)先級

   ,運(yùn)算符
   使用,可以分割多個(gè)語句,一般可以在聲明多個(gè)變量時(shí)使用       


 //使用,運(yùn)算符同時(shí)聲明多個(gè)變量
//   var a , b ,c;

//可以聲明多個(gè)變量并賦值
  var a=1,b=2,c=3;
  alert(b);   //彈窗為2

  
     就和數(shù)學(xué)中一樣,在js運(yùn)算符也有優(yōu)先級
       比如:先乘除 后加減
     在js中有一個(gè)運(yùn)算符優(yōu)先級的表
        在表中越靠上優(yōu)先級越高,優(yōu)先級越高越優(yōu)先計(jì)算
        如果優(yōu)先級一樣,則從左往右計(jì)算
     但是這個(gè)表我們不需要記憶,如果遇到優(yōu)先級不清楚
        可以使用()來改變
  
   var result = 1 + 2 * 3;
   console.log("result ="+result);  //輸出為7 

   
  
     如果||的優(yōu)先級高,或者倆個(gè)一樣高,則應(yīng)該返回3
     如果與的優(yōu)先級高,則應(yīng)該返回1

  
   var result = 1 || 2 && 3;
   console.log("result ="+result); //輸出為1

二十六、代碼塊

   我們的語句是由一條一條語句構(gòu)成的
     語句是按照自上向下的順序一條一條執(zhí)行的 
    在js中可以使用{}來為語句進(jìn)行分組 
         同在一個(gè){}中的語句我們稱為是一組語句
         它們要么執(zhí)行,要么都不執(zhí)行
         一個(gè){}中的語句我們也稱為代碼塊
         在代碼塊的后面不用在編寫;了
      
    js中的代碼塊,只具有分組的作用,沒有其他的用途
        代碼塊內(nèi)部的內(nèi)容,在外部是完全可見的
        
{ 
    alert("hello");
    console.log("你好");
    document.write("語句");
}
 console.log("a ="+a);  //可以執(zhí)行

二十七、if語句(一)

 流程控制語句:
     — js中的程序是從上到下一行一行執(zhí)行的
     — 通過流程控制語句可以控制程序執(zhí)行流程
          使流程可以根據(jù)一定的條件來選擇執(zhí)行
     — 語句分類:
          1.條件判斷語句
          2.條件分支語句
          3.循環(huán)語句 
 
1.條件判斷語句:
     — 使用條件判斷語句可以在執(zhí)行某個(gè)語句之前進(jìn)行判斷
          如果條件成立才會(huì)執(zhí)行語句,條件不成立則語句不會(huì)執(zhí)行
     — if語句
        — 語法一:
             if(條件表達(dá)式){
                   語句....
             }                           
        if語句在執(zhí)行時(shí),會(huì)先對條件表達(dá)式進(jìn)行求值判斷
        如果條件表達(dá)式的值為true,則執(zhí)行if后的語句
        如果條件表達(dá)式的值為false,則不會(huì)執(zhí)行if后的語句  
           if語句只能控制緊隨其后的那個(gè)語句
              如果希望if語句可以控制多條語句
              可以將這些語句統(tǒng)一放到代碼塊中{}
           if語句后的代碼塊不是必須的,但是在開發(fā)中盡量寫上代碼塊,即使if后只有一條語句        


   if(true) alert("你猜我出來嗎");
   
   //條件成立都執(zhí)行
   var a = 11;
   if(a > 10) 
   {
        alert("a比1大~~~");
        alert("誰也管不了我");
    }

    var a = 15;
    if(a > 10 && a <= 20) 
    {
        alert("a大于10,并且a小于等于20");   //成立
    }
          
 

二十八、if語句(二)

  if語句
     語法二:
        if(條件語句){
            語句.....
        } elae{
            語句.....
        }
  if...else...語句...
     當(dāng)該語句執(zhí)行時(shí),會(huì)先對if后的條件表達(dá)式進(jìn)行求值判斷
         如果該值為true,則執(zhí)行if后的語句
         如果該值為false,則執(zhí)行else后的語句
     語句三:
        if(條件語句){
            語句....
        }else  if(條件語句){
            語句....
        }else  if(條件語句){
            語句....
        }elae{
            語句.....
        }
    if...else if...else
     當(dāng)該語句執(zhí)行時(shí),會(huì)從上到下依次對條件表達(dá)式進(jìn)行求值判斷
     如果該值為true,則執(zhí)行當(dāng)前語句
     如果該值為false,則繼續(xù)向下判斷
     如果所有的條件都不滿足,則執(zhí)行最后一個(gè)else后的語句
     該語句中,只會(huì)

//方法一

var age = 60;

 if(age >= 60){
  alert("你已經(jīng)退休了");
}
else{
  alert("你還沒有退休");
}

//方法二
var age = 90;

if(age > 100 && age <= 30){
  alert("活著挺沒意思");
}else if(age > 80){
  alert("你也老大不小了");
}else if(age > 60){
  alert("你也退休了");
}else if(age > 30){
  alert("你已經(jīng)中年了");
}else if(age > 17){
  alert("你已經(jīng)成年了");
}else{
  alert("你還是個(gè)孩子");
}  


二十九、if練習(xí)(一)

  從鍵盤輸入小明的期末成績
  當(dāng)成績?yōu)?00時(shí),獎(jiǎng)勵(lì)一倆BMW
  當(dāng)成績?yōu)閇80-99]時(shí),獎(jiǎng)勵(lì)一臺(tái)iphone15s
  當(dāng)成績?yōu)閇60-80]時(shí),獎(jiǎng)勵(lì)一本參考書
  其他時(shí),什么獎(jiǎng)勵(lì)也沒有
    


   prompt()可以彈出一個(gè)提示框,該提示框中會(huì)帶有一個(gè)文本框
   用戶可以在文本框中輸入一段內(nèi)容,該函數(shù)需要一個(gè)字符串作為參數(shù)
   該字符串將會(huì)作為提示框的提示文字

   用戶輸入的內(nèi)容將會(huì)作為函數(shù)的返回值返回,可以定義一個(gè)變量來接收該內(nèi)容


//score就是小明的期末成績
var score = prompt("請輸入小明的期末成績(0-100):");
//判斷值是否合法 (大于100 或則 小于0 或則 不是數(shù)字 都要拉出去斃了 )
if(score > 100 || score < 0 || isNaN(score)){

  alert("拉出去斃了");

}
else{

  //根據(jù)score的值來決定小明什么獎(jiǎng)勵(lì)  
    if(score == 100){
        alert("獎(jiǎng)勵(lì)一倆BMW");
    }
    else if(score >= 80){
        alert("獎(jiǎng)勵(lì)一臺(tái)iphone15s");
    }
    else if(score >= 60){
        alert("獎(jiǎng)勵(lì)一本參考書");
    }
    else{
        alert("什么獎(jiǎng)勵(lì)也沒有");
    }

}

三十、if練習(xí)(二)

/*
   大家都知道,男大當(dāng)婚女大當(dāng)嫁,那么女方家長要嫁女兒,當(dāng)然要提出一定的條件
   高:180cm以上, 富1000萬以上, 帥500以上
   如果三個(gè)條件同事滿足,則"我一定要嫁給你"
   如果三個(gè)條件有為真的情況,則:"嫁吧,比上不足,比下有余"
   如果三個(gè)條件都不滿足,則:"不嫁"
*/


 var height = prompt("請輸入你的身高(cm):");
  var money = prompt("請輸入你的財(cái)富(萬):");
  var face = prompt("請輸入你的顏值(px):");

  // alert(height+","+money+","+face);
 //如果三個(gè)條件同事滿足,則"我一定要嫁給你"(同時(shí)滿足用于&&)
  if(height > 180 && money > 1000 && face > 500){
       alert("我一定要嫁給你");
  }else if(height > 180 || money > 1000 || face > 500){
  //如果三個(gè)條件有為真的情況(有一個(gè)滿足用或||),則:"嫁吧,比上不足,比下有余"
       alert("嫁吧,比上不足,比下有余");
  }else{
       alert("不嫁");
  }         
        

三十一、if練習(xí)(三)

編寫程序,由鍵盤輸入三個(gè)整數(shù)分別存入變量num1,num2,num3
對他們進(jìn)行排序,并且從小到大輸出

 //獲取用戶的三個(gè)數(shù)
 //prompt()函數(shù)的返回值是string類型的
 //在prompt前加+轉(zhuǎn)換為number
 var num1 = +prompt("請輸入第一個(gè)數(shù)");
 var num2 = +prompt("請輸入第二個(gè)數(shù)");
 var num3 = +prompt("請輸入第三個(gè)數(shù)");

 alert(typeof num1);


   if(num1 < num2 && num1 < num3){
          //num1最小  比較num2 和 num3
       if(num2  < num3){
           //num1 num2 num3
           alert(num1+","+num2+","+num3);
       }else{
           //num1 num3 num2
           alert(num1+","+num3+","+num2);
       }
   }else if(num2 < num1 && num2 < num3){
       //num2最小   比較num1 和num3
       if(num1 < num3){
            //num2 num1 num3
           alert(num2+","+num1+","+num3);
       }else{
            //num2 num3 num1
           alert(num2+","+num3+","+num1);
       }
   }else{
       //num3最小  比較num1 和num2
       if(num1 < num2){
            //num3 num1 num2
            alert(num3+","+num1+","+num2);
       }else{
           //num3 num2 num1
           alert(num3+","+num2+","+num1);
       }
   }    
   

三十二、條件分支語句

   
  條件分支語句也叫switch語句
   語法:
       switch(條件表達(dá)式){
           case 表達(dá)式:
                語句...
                break;
            case 表達(dá)式:
                語句...
                break;
            case 表達(dá)式:
                語句...
                break;
            defsult:
                語句...
       }

    執(zhí)行流程:
          switch...case...語句
          在執(zhí)行時(shí)會(huì)依次將case后的表達(dá)式的值和switch后的條件表達(dá)式的值進(jìn)行全等比較   
              如果比較結(jié)果為true,則從當(dāng)前case處開始執(zhí)行代碼
                  當(dāng)前case后的所有代碼都會(huì)被執(zhí)行,我們可以在case的后面跟著一個(gè)break關(guān)鍵字
                  這樣可以確保只會(huì)執(zhí)行當(dāng)前case后的語句,而不會(huì)執(zhí)行其他的case
              如果比較結(jié)果為false,則繼續(xù)向下比較
              如果所有的比較結(jié)果都為false,則只執(zhí)行default后的語句

    switch語句和if語句的功能實(shí)際上有重復(fù)的,使用switch可以實(shí)現(xiàn)if的功能  
         同樣使用if也可以實(shí)現(xiàn)switch的功能,所以我們使用時(shí),可以根據(jù)自己的習(xí)慣選擇          
   
   
   //根據(jù)num的值,輸出對應(yīng)的中文

 var num = abc;
/*
 if(num == 1){
     console.log("壹");
 }else if(num == 2){
     console.log("貳");
 }
 */
                                                //   這倆中方法差不多
 switch(num){
     case 1:
        console.log("壹");
        //使用break可以來退出switch語句
        break;
     case 2:
        console.log("貳");
        break;
    case 3:
        console.log("叁");
        break;
    default :
        console.log("非法數(shù)字");
        break;        
 }


三十二、條件分支語句練習(xí)(二)

   從鍵盤接收整數(shù)參數(shù),如果該數(shù)為1-7,打印對應(yīng)的星期,否則打印非法參數(shù)

 var week = 2;
 switch(week){
     case 1:
        console.log("星期一");
        //使用break可以來退出switch語句
        break;
     case 2:
        console.log("星期二");
        break;
    case 3:
        console.log("星期三");
        break;
    default :
        console.log("非法數(shù)字");
        break;        
 }

三十二、條件分支語句練習(xí)(一)

對于成績大于60分的,輸出"合格"。低于60分的,輸出"不合格"

//方法一:

 var socre = 59;
  switch(parseInt(socre/10)){
      case 10:
      case 9:
      case 8:
      case 7:
      case 6:
         console.log("合格");
         break;
      default:
         console.log("不合格");
         break;
  }

//方法二:

 var socre = 59;
  switch(true){
      case score >= 60:
         console.log("合格");
         break;
      default:
          console.log("不合格");
          break;
  }
    

三十三、while循環(huán)

  /*
     向頁面中輸出連續(xù)的數(shù)字
 */

    // var n = 1;
    // document.write(n++ +"
"); //輸出1 /* 循環(huán)語句: 通過循環(huán)語句可以反復(fù)的執(zhí)行一段代碼多次 while循環(huán) -語法 while(條件表達(dá)式){ 語句... } -while語句在執(zhí)行時(shí), 先對條件表達(dá)式進(jìn)行求值判斷 如果值為true,則執(zhí)行循環(huán)體 循環(huán)體執(zhí)行完畢后,繼續(xù)對表達(dá)式進(jìn)行判斷 如果為true,則繼續(xù)執(zhí)行循環(huán)體,以此類推 如果值為flash,則終止循環(huán) do...while循環(huán) - 語法 do{ 語句... }while(條件表達(dá)式) - 執(zhí)行流程: do...while語句在執(zhí)行時(shí),會(huì)先執(zhí)行循環(huán)體 循環(huán)體執(zhí)行完畢以后,在對while后的條件表達(dá)式進(jìn)行判斷 如果結(jié)果為true,則繼續(xù)執(zhí)行循環(huán)體,執(zhí)行完畢繼續(xù)判斷以此類推 如果結(jié)果為false,則終止循環(huán) 實(shí)際上這倆個(gè)語句功能類似,不同的是while是先判斷后執(zhí)行 而do...while會(huì)先執(zhí)行后判斷 do...while可以保證循環(huán)體至少執(zhí)行一次 而while不能 */

// 方法一

//向這種將條件表達(dá)式寫死為true的循環(huán),叫做死循環(huán)
//該循環(huán)不會(huì)停止,除非瀏覽器關(guān)閉,死循環(huán)在開發(fā)中慎用
//可以使用break,來終止循環(huán)
var n = 1;
while(true){
  alert(n++);
  //判斷n是否是10
  if(n == 10){
    //退出循環(huán)
    break;
  }
}

//方法二

//創(chuàng)建一個(gè)循環(huán),往往需要三個(gè)步驟
// 1.創(chuàng)建一個(gè)初始化的變量
var i = 0;
//2.在循環(huán)中設(shè)置一個(gè)條件表達(dá)式
 while(i < 10){
    alert(i);
    //3.定義一個(gè)更新表達(dá)式,每次更新初始化變量
    i++;
 }

//方法三

var i = 0;
while(i < 10){
  document.write(i++ +"
"); } // 輸出為換行的數(shù)字

//方法四

do{
  socument.write(i++ +"
"); }while(i < 10);

三十四、while循環(huán)練習(xí)

 /*
    假如投資的幾年利率為5%,試求從1000塊增長到5000塊,需要花費(fèi)多少年

    1000 1000*1.05
    1050 1050*1.05
*/

//定義一個(gè)變量,表示當(dāng)前的錢數(shù)   (代碼解析)
 var money = 1000;
  //定義一個(gè)計(jì)數(shù)器
  var count = 0;
 //定義一個(gè)while循環(huán)來計(jì)算每年的錢數(shù)
 while(money < 5000){
     money *= 1.05;
     //使用count自增
     count++;
 }
 console.log("一共需要"+count+"年");


//  money *= 1.05    //money = money * 1.05  它倆一個(gè)意思

var money = 1000;
var count = 0;
while(money < 5000){
     money *= 1.05;
     count++;
 }
 console.log("一共需要"+count+"年");

三十五、while練習(xí)(一) 使用if練習(xí)一

//將prompt放入到一個(gè)循環(huán)中
while(true){

//score就是小明的期末成績
var score = prompt("請輸入小明的期末成績(0-100):");
//判斷用戶輸入的值是否合法
if(score >= 0 && score <= 100){
    //滿足該條件則證明用戶的輸入合法,退出循環(huán)
    break;
}
alert("請輸入有效的分?jǐn)?shù)");

}

  //根據(jù)score的值來決定小明什么獎(jiǎng)勵(lì)  
    if(score == 100){
        alert("獎(jiǎng)勵(lì)一倆BMW");
    }
    else if(score >= 80){
        alert("獎(jiǎng)勵(lì)一臺(tái)iphone15s");
    }
    else if(score >= 60){
        alert("獎(jiǎng)勵(lì)一本參考書");
    }
    else{
        alert("什么獎(jiǎng)勵(lì)也沒有");
    }

三十六、for循環(huán)

for語句,也是一個(gè)循環(huán)語句,也稱為for循環(huán)

   在for循環(huán)中,為我們提供了專門的位置用來放三個(gè)表達(dá)式:
        1.初始化表達(dá)式
        2.條件表達(dá)式
        3.更新表達(dá)式

     for(初始化表達(dá)式;條件表達(dá)式;更新表達(dá)式){
         語句...
     } 
     
     for循環(huán)的執(zhí)行流程:
        1.執(zhí)行初始化表達(dá)式,初始化變量(初始化表達(dá)式只能則執(zhí)行一次)
        2.執(zhí)行條件表達(dá)式,判斷是復(fù)執(zhí)行循環(huán)
             3.如果為true,則執(zhí)行循環(huán)
              如果為false,則終止循環(huán)
        4.執(zhí)行更新表達(dá)式,更新表達(dá)式執(zhí)行完畢繼續(xù)重復(fù)執(zhí)行

  
   //方法一:
 //創(chuàng)建一個(gè)執(zhí)行10次的while循環(huán)
 //初始化表達(dá)式
  var i = 0;
 // 
  while(i < 10){
      //設(shè)置更新表達(dá)式
      alert(i++);
  }
//方法二:
 for(i = 0 ; i < 10 ; i++){
     alert(i);
 }
 //方法三:
 /*
     for循環(huán)中的三個(gè)部分都可以省略,也可以寫在外部
     如果在for循環(huán)中不寫任何表達(dá)式,只寫倆個(gè);
     此時(shí)循環(huán)是一個(gè)死循環(huán)會(huì)一直執(zhí)行下去,慎用
 */
 var i = 0;
 for(;i<10;){
     alert(i++);
 }

三十七、for循環(huán)練習(xí)(一)

打印1-100之間所有奇數(shù)之和

//創(chuàng)建一個(gè)變量,用來保存奇數(shù)之和

var sum = 0;
for(var i = 1 ; i <= 100 ; i++){
    //判斷i是否是奇數(shù)
    //不能被2整除的數(shù)就是奇數(shù)(==是偶數(shù) !=是奇數(shù))
    if(i%2 != 0){
        //如果i除以2有余數(shù)則證明i是奇數(shù)
        // console.log(i);
        sum = sum + i;
    }
}

//奇數(shù)總和2500
console.log("奇數(shù)之和:"+sum);


三十八、for循環(huán)練習(xí)(二)

打印1-100之間的所有7的倍數(shù)的個(gè)數(shù)及總和

//3.定義一個(gè)變量來保存組合
var sum = 0;
//5.定義一個(gè)計(jì)數(shù)器,來記錄數(shù)量
var count = 0;
for(var i = 1 ; i <= 100 ; i++){
  // console.log(i);  (1.先打印出1到100)

  //2.判斷i是否是7的倍數(shù)(輸出7的倍數(shù))
  if(i%7 == 0){
    // console.log(i);
    sum += i;   //(4.求總和)
    count++;    //(5.使計(jì)數(shù)器自增1)
  }
}
//輸出總和
console.log("總和為:"+sum);   //合為735
//輸出總數(shù)量
console.log("總數(shù)量:"+count);  //數(shù)量為14    


三十九、for循環(huán)練習(xí)(三)

水仙花數(shù)

水仙花數(shù)是指一個(gè)3位數(shù),它的每個(gè)位上的數(shù)字的3 次冪之和等于它本身
 (例如: 1^3 + 5^3 + 3^3 = 153),請打印所有的水仙花數(shù)

//先打印所有的三位數(shù)

 for(var i = 100 ; i < 1000 ; i++){
     //獲取i的百位 十位 個(gè)位的數(shù)字
     //獲取百位數(shù)
     var bai = parseInt(i/100);
     //獲取十位上的數(shù)字
    var shi = parseInt((i-bai*100)/10);
     //獲取個(gè)位上的數(shù)字                                                                                                                      
     var ge = i % 10;
     //判斷i是否是水仙花數(shù)
     if(bai*bai*bai+shi*shi*shi+ge*ge*ge == i){
     console.log(i);   //輸出的結(jié)果為153 370 371 407
    }
 }  

四十、質(zhì)數(shù)練習(xí)

在頁面中接收一個(gè)用戶輸入的數(shù)字,并判斷該數(shù)是否是質(zhì)數(shù)

質(zhì)數(shù):只能被1和它自身整除的數(shù),1不是質(zhì)數(shù)也不是合數(shù),質(zhì)數(shù)必須是大于1的自然數(shù)
   
 var num = prompt("請輸入一個(gè)大于1的整數(shù)");
   //判斷這個(gè)值是否合法
    if(num <= 1){
        alert("該數(shù)值不合法");
    }else{
        //創(chuàng)建一個(gè)變量來保存當(dāng)前的數(shù)的狀態(tài)
        //默認(rèn)當(dāng)前num是質(zhì)數(shù)
        var flag = true;

        //判斷num是否是質(zhì)數(shù)
        //獲取2-num之間的數(shù)
        for(var i=2;i

四十一、嵌套的for循環(huán)

/*
  通過程序,在頁面中輸出如下的圖形
 1 
  *****
  *****
  *****
  *****
  *****
  2
  *     1  <1   i=0
  **    2  <2   i=1
  ***   3  <3   i=2
  ****  4  <4   i=3
  ***** 5  <5   i=4
3
  ***** 1   j<5(5-0)  i=0
  ****  2   j<4(5-1)  i=1
  ***   3   j<3(5-2)  i=2
  **    4   j<2(5-3)  i=3
  *     5   J<1(5-4)  i=4
  
*/

 /*
   1 
  *****
  *****
  *****
  *****
  *****
 */

 //向body中輸出一個(gè)內(nèi)容
 //document.write("***** 
"); (方法一) //document.write("*****
"); //document.write("*****
"); //通過一個(gè)for循環(huán)來輸出圖形 //這個(gè)for循環(huán)執(zhí)行幾次,圖形的高度就是多少 //它可以用來控制圖形的高度 for (var i=0;i<5;i++){ //高 // document.write("*****
"); //方法二 //在循環(huán)的內(nèi)部創(chuàng)建一個(gè)循環(huán),用來控制圖形的寬度 //目前我們的外部的for循環(huán)執(zhí)行1次,內(nèi)部的就會(huì)執(zhí)行5次 //內(nèi)層循環(huán)可以來決定圖形的寬度,執(zhí)行幾次圖從的寬度就是多少 for(var j=0;j<5;j++){ //寬 document.write("*   "); // 空格 } //輸出一個(gè)換行 document.write("
"); //最終輸出一個(gè)5*5的*矩形 } /*2 * ** *** **** ***** */ for(var i=0;i<5;i++){ for(var j=0 ; j"); } //最終輸出一個(gè)梯形的* /* 3 ***** **** *** ** * */ for(var i=0 ; i<5 ; i++){ for(var j=0 ; j<5-i ; j++){ document.write("*   "); } document.write("
"); }

四十二、for循環(huán)練習(xí)(一)

1.打印99乘法表

   
 //創(chuàng)建外層循環(huán),用來控制乘法表的高度
  for(var i=1; i<=9 ; i++){
      //創(chuàng)建一個(gè)內(nèi)層循環(huán)來控制圖形的寬度
      for(var j=1 ; j<=i ; j++){
          document.write(""+j+"*"+i+"="+i*j+"");
      }
      //輸出一個(gè)換行
      document.write("
"); }