WEB基礎入門九:JavaScript及函數(shù)條件

一、語言

1烁登、 語言的發(fā)展:

  • 紙帶機:機器語言职烧;
  • 匯編語言:符號語言;
  • 現(xiàn)代語言:高級語言

2防泵、起源
JavaScript誕生于1995年蚀之,它的出現(xiàn)主要是用于處理網頁中的前端驗證,所謂的前端驗證捷泞,就是指檢查用戶輸入的內容是否符合一定的規(guī)則

3足删、JavaScript構成

  • ECMAScript(JS的標準名命名)
  • DOM
  • BOM

4、特點

  • 解釋型語言
  • 類似于 C 和 Java 的語法結構
  • 動態(tài)語言
  • 基于原型的面向對象

二锁右、基本語法

1失受、編寫位置
JS代碼需要編寫到<script>標簽中,一般將script標簽寫到head中(和style標簽有點像)

  • 屬性:type:默認值text/javascript可以不寫咏瑟,不寫也是這個值
  • src:當需要引入一個外部的js文件時拂到,使用該屬性指向文件的地址
  • 可以將js代碼編寫到外部js文件中,然后通過script標簽引入,寫到外部文件中可以在不同的頁面中同時引用码泞,也可以利用到瀏覽器的緩存機制,推薦方式
  • 如果一個script引入了外部的js代碼兄旬,那么這個script就不能再寫js代碼,必須新建一個script
<script type="text/javascript" src="js/script.js"></script>
<script type="text/javascript">  
    alert("寧姐,你真漂亮S嗔取领铐!");/*控制瀏覽器彈出一個警告框*/
    document.write("看我出不出來~~~");/*讓計算機在頁面中輸出一個內容*/
    console.log("Hello World");/*向控制臺輸出一個內容*/
</script>

可以將js代碼編寫到標簽的onclick屬性中,當我們點擊按鈕時宋舷,js代碼才會執(zhí)行绪撵;
可以將js代碼寫在超鏈接的href屬性中,這樣當點擊超鏈接時祝蝠,會執(zhí)行js代碼
2音诈、基本語法

  • 注釋
    多行注釋:"/* 注釋內容 */"
    單行注釋://注釋內容

  • 嚴格區(qū)分大小寫

  • JS中每一條語句以分號(;)結尾:如果不寫分號,瀏覽器會自動添加绎狭,但是會消耗一些系統(tǒng)資源细溅,而且有些時候,瀏覽器會加錯分號坟岔,所以在開發(fā)中分號必須寫

  • JS中會忽略多個空格和換行谒兄,所以我們可以利用空格和換行對代碼進行格式化

  • 字面量(常量)和變量
    字面量(常量),都是一些不可改變的值社付,比如 :1 2 3 4 5 "hello"承疲,字面量都是可以直接使用邻耕,但是我們一般都不會直接使用字面量
    變量,變量的作用是給某一個值或對象標注名稱燕鸽,可以用來保存字面量兄世,而且變量的值是可以任意改變的,變量更加方便我們使用啊研,所以在開發(fā)中都是通過變量去保存一個字面量御滩,而很少直接使用字面量

  • 聲明變量
    在js中使用var關鍵字來聲明一個變量,然后為變量賦值党远,也可以聲明和賦值同時進行

var a;
a = 123;
var b = 789;
  • 標識符
    在JS中所有的可以由我們自主命名的都可以稱為是標識符削解,例如:變量名、函數(shù)名沟娱、屬性名都屬于標識符氛驮;
    命名一個標識符時需要遵守如下的規(guī)則:

1.標識符中可以含有字母、數(shù)字济似、_矫废、$
2.標識符不能以數(shù)字開頭
3.標識符不能是ES中的關鍵字或保留字
4.標識符一般都采用駝峰命名法(首字母小寫,每個單詞的開頭字母大寫砰蠢,其余字母小寫蓖扑,比如:helloWorld xxxYyyZzz)

JS底層保存標識符時實際上是采用的Unicode編碼,所以理論上講台舱,所有的utf-8中含有的內容都可以作為標識符

三律杠、數(shù)據(jù)類型

數(shù)據(jù)類型指的就是字面量的類型,在JS中一共有六種數(shù)據(jù)類型:

String 字符串(基本數(shù)據(jù)類型)
Number 數(shù)值(基本數(shù)據(jù)類型)
Boolean 布爾值(基本數(shù)據(jù)類型)
Null 空值(基本數(shù)據(jù)類型)
Undefined 未定義(基本數(shù)據(jù)類型)
Object 對象(引用數(shù)據(jù)類型)

1柿赊、string字符串

  • 在JS中字符串需要使用引號引起俩功;
  • 使用雙引號或單引號都可以,但是不要混著用碰声;
  • 引號不能嵌套,雙引號不能放雙引號熬甫,單引號不能放單引號
  • 在字符串中我們可以使用\作為轉義字符胰挑,當表示一些特殊符號時可以使用\進行轉義
  \" 表示 "
  \' 表示 '
  \n 表示換行
  \\ 表示\
  \t 制表符

2、number數(shù)值類型

  • 在JS中所有的數(shù)值都是Number類型椿肩,包括整數(shù)和浮點數(shù)(小數(shù))
  • JS中可以表示的數(shù)字的最大值Number.MAX_VALUE:1.7976931348623157e+308瞻颂;大于0的最小值Number.MIN_VALUE:5e-324
  • 如果使用Number表示的數(shù)字超過了最大值,則會返回一個:Infinity 表示正無窮郑象;Infinity 表示負無窮贡这,使用typeof檢查Infinity也會返回number
  • NaN 是一個特殊的數(shù)字,表示Not A Number厂榛,使用typeof檢查一個NaN也會返回number
  • 在JS中整數(shù)的運算基本可以保證精確盖矫,如果使用JS進行浮點運算丽惭,可能得到一個不精確的結果,所以千萬不要使用JS進行對精確度要求比較高的運算

3辈双、Boolean布爾值

  • 布爾值只有兩個责掏,主要用來做邏輯判斷:
  • true:- 表示真;
    false:- 表示假
  • 使用typeof檢查一個布爾值時湃望,會返回boolean

4换衬、Null和Undefined
Null(空值)類型的值只有一個,就是null证芭,null這個值專門用來表示一個為空的對象瞳浦;
Undefined(未定義)類型的值只有一個,就undefind废士,當聲明一個變量术幔,但是并不給變量賦值時,它的值就是undefined

5湃密、type運算符

使用typeof操作符可以用來檢查一個變量的數(shù)據(jù)類型诅挑,語法:typeof 數(shù)據(jù)

  • 返回結果:
    typeof 數(shù)值 number
    typeof 字符串 string
    typeof 布爾型 boolean
    typeof undefined undefined
    typeof null object

6、數(shù)值的轉換
指將一個數(shù)據(jù)類型強制轉換為其他的數(shù)據(jù)類型泛源,
類型轉換主要指拔妥,將其他的數(shù)據(jù)類型,轉換為String达箍,Number没龙,Boolean

  • 轉換為string
    1移必、調用被轉換數(shù)據(jù)類型的toString()方法聊训,該方法不會影響到原變量彤悔,它會將轉換的結果返回乡翅,但是注意:null和undefined這兩個值沒有toString()方法腿椎,如果調用他們的方法瞬浓,會報錯
    2旋讹、調用String()函數(shù)序厉,并將被轉換的數(shù)據(jù)作為參數(shù)傳遞給函數(shù)邻辉,使用String()函數(shù)做強制類型轉換時溪王,對于Number和Boolean實際上就是調用的toString()方法,但是對于null和undefined值骇,就不會調用toString()方法莹菱,它會將 null 直接轉換為 "null",
    3吱瘩、調用xxx的yyy()方法道伟,就是xxx.yyy()

  • 轉換為Number
    使用Number()函數(shù)
    1、字符串 --> 數(shù)字: 如果是純數(shù)字的字符串使碾,則直接將其轉換為數(shù)字蜜徽;如果字符串中有非數(shù)字的內容祝懂,則轉換為NaN;如果字符串是一個空串或者是一個全是空格的字符串娜汁,則轉換為0
    2嫂易、布爾 --> 數(shù)字: true 轉成 1;false 轉成 0
    3掐禁、null --> 數(shù)字 0
    4怜械、undefined --> 數(shù)字 NaN
    5、這種方式專門用來對付字符串:parseInt() 把一個字符串轉換為一個整數(shù)傅事;parseFloat() 把一個字符串轉換為一個浮點數(shù)缕允,如果對非String使用parseInt()或parseFloat(),它會先將其轉換為String然后在操作蹭越,
    6障本、其他進制的數(shù)字:在js中,如果需要表示16進制的數(shù)字响鹃,則需要以0x開頭驾霜;如果需要表示8進制的數(shù)字,則需要以0開頭买置;如果要要表示2進制的數(shù)字粪糙,則需要以0b開頭,但是不是所有的瀏覽器都支持忿项,可以在parseInt()中傳遞一個第二個參數(shù)蓉冈,來指定數(shù)字的進制

  • 轉換為Boolean
    使用Boolean()函數(shù)
    1、數(shù)字 ---> 布爾:除了0和NaN轩触,其余的都是true
    2寞酿、字符串 ---> 布爾:除了空串,其余的都是true
    3脱柱、null和undefined都會轉換為false
    4伐弹、對象也會轉換為true

四、運算符

運算符也叫操作符褐捻,通過運算符可以對一個或多個值進行運算,并獲取運算結果掸茅,比如:typeof就是運算符,可以來獲得一個值的類型柠逞,它會將該值的類型以字符串的形式返回
1、算術運算符
當對非Number類型的值進行運算時景馁,會將這些值轉換為Number然后在運算板壮,任何值和NaN做運算都得NaN

  • +: 可以對兩個值進行加法運算,并將結果返回 合住,如果對兩個字符串進行加法運算绰精,則會做拼串撒璧,會將兩個字符串拼接為一個字符串,并返回笨使,任何的值和字符串做加法運算卿樱,都會先轉換為字符串,然后再和字符串做拼串的操作硫椰,我們可以利用這一特點繁调,來將一個任意的數(shù)據(jù)類型轉換為String,我們只需要為任意的數(shù)據(jù)類型 + 一個 "" 即可將其轉換為String靶草,這是一種隱式的類型轉換蹄胰,由瀏覽器自動完成,實際上它也是調用String()函數(shù)
  • -: 可以對兩個值進行減法運算奕翔,并將結果返回
  • * 可以對兩個值進行乘法運算
  • /: 可以對兩個值進行除法運算
  • %: 取模運算(取余數(shù))
  • 任何值做- * /運算時都會自動轉換為Number裕寨,我們可以利用這一特點做隱式的類型轉換,可以通過為一個值 -0 *1 /1來將其轉換為Number派继,原理和Number()函數(shù)一樣宾袜,使用起來更加簡單

2、一元運算符

  • + 正號:正號不會對數(shù)字產生任何影響
  • - 負號:負號可以對數(shù)字進行符號的取反
    對于非Number類型的值驾窟,它會將先轉換為Number庆猫,然后再運算
    可以對一個其他的數(shù)據(jù)類型使用+,來將其轉換為number,它的原理和Number()函數(shù)一樣

3纫普、自增和自減

  • 自增 ++:
    1阅悍、通過自增可以使變量在自身的基礎上增加1;
    2昨稼、對于一個變量自增以后节视,原變量的值會立即自增1;
    3假栓、 自增分成兩種:后++(a++) 和 前++(++a):無論是a++還是++a寻行,都會立即使原變量的值自增1,不同的是a++和++a的值不同匾荆,a++的值等于原變量的值(自增前的值)拌蜘,++a的值等于新值 (自增后的值)
  • 自減 --:
    1、通過自減可以使變量在自身的基礎上減1牙丽;
    2简卧、自減分成兩種:后--(a--) 和 前--(--a):無論是a--還是--a都會立即使原變量的值自減1,不同的是a-- 和 --a的值不同烤芦,a-- 是變量的原值 (自減前的值)举娩,--a 是變量的新值 (自減以后的值)
        var n1=10;
        var n2=20;
        
        var n = n1++; //先賦值n=10  后自增n1=11
        
        console.log('n=' + n);  //10
        console.log('n1=' + n1); //11
        
        n = ++n1; //先自增n1=12  后賦值n=12
        console.log('n=' + n); //12
        console.log('n1=' + n1); //12
        
        n = n2--;//先賦值n=20 后自減n2=19 
        console.log('n=' + n); //20
        console.log('n2=' + n2); //19
        
        n = --n2; //先自減n2=18 后賦值n=18
        console.log('n=' + n); //18
        console.log('n2=' + n2); //18

4、邏輯運算符

  • !非:
    1铜涉、!可以用來對一個值進行非運算
    2智玻、所謂非運算就是值對一個布爾值進行取反操作,true變false芙代,false變true
    3吊奢、如果對一個值進行兩次取反,它不會變化
    4纹烹、如果對非布爾值進行元素页滚,則會將其轉換為布爾值,然后再取反滔韵,所以我們可以利用該特點逻谦,來將一個其他的數(shù)據(jù)類型轉換為布爾值,可以為一個任意數(shù)據(jù)類型取兩次反陪蜻,來將其轉換為布爾值邦马,原理和Boolean()函數(shù)一樣
  • && 與:
    1、&&可以對符號兩側的值進行與運算并返回結果
    2宴卖、運算規(guī)則:兩個值中只要有一個值為false就返回false滋将,只有兩個值都為true時,才會返回true症昏;JS中的“與”屬于短路的與随闽,如果第一個值為false,則不會看第二個值
  • || 或:
    1肝谭、||可以對符號兩側的值進行或運算并返回結果
    2掘宪、運算規(guī)則:兩個值中只要有一個true,就返回true攘烛,如果兩個值都為false魏滚,才返回false;JS中的“或”屬于短路的或坟漱,如果第一個值為true鼠次,則不會檢查第二個值
        var a = true;
        //對a進行非運算
        a = !a;
        //console.log("a = " + a);
        
        var b = 10;
        b = !!b;
        
        //console.log("b = " + b);
        //console.log(typeof b);
        
        //如果兩個值都是true則返回true
        var result = true && true;
        
        //只要有一個false,就返回false
        result = true && false;
        result = false && true;
        result = false && false;
        
        //console.log("result = "+result);
        
        //第一個值為true芋齿,會檢查第二個值
        //true && alert("看我出不出來P瓤堋!");
        
        //第一個值為false觅捆,不會檢查第二個值
        //false && alert("看我出不出來I庖邸!");
        
        //兩個都是false栅炒,則返回false
        result = false || false;
        
        //只有有一個true扩劝,就返回true
        result = true || false;
        result = false || true ;
        result = true || true ;
        
        //console.log("result = "+result);
        
        //第一個值為false庸论,則會檢查第二個值
        //false || alert("123");
        
        //第一個值為true职辅,則不再檢查第二個值
        true || alert("123");
  • 與或運算
    && || 非布爾值的情況:對于非布爾值進行與或運算時棒呛,會先將其轉換為布爾值,然后再運算域携,并且返回原值簇秒,
    1、與運算:如果第一個值為true秀鞭,則必然返回第二個值趋观;如果第一個值為false,則直接返回第一個值锋边;如果兩個值都為true皱坛,則返回后邊的;如果兩個值中有false豆巨,則返回靠前的false
    2剩辟、或運算:如果第一個值為true,則直接返回第一個值往扔;如果第一個值為false贩猎,則返回第二個值

5、賦值運算符

  • =:可以將符號右側的值賦值給符號左側的變量
  • += :a += 5 等價于 a = a + 5
  • -=:a -= 5 等價于 a = a - 5
  • *=:a *= 5 等價于 a = a5
  • /=:a /= 5 等價于 a = a / 5
  • %=:a %= 5 等價于 a = a % 5

6萍膛、關系運算符
通過關系運算符可以比較兩個值之間的大小關系吭服,如果關系成立它會返回true,如果關系不成立則返回false

  • “>”大于號:判斷符號左側的值是否大于右側的值蝗罗,如果關系成立艇棕,返回true,如果關系不成立則返回false
  • “>= 大于等于:”判斷符號左側的值是否大于或等于右側的值
  • < 小于號
  • <= 小于等于
  • 非數(shù)值的情況:對于非數(shù)值進行比較時串塑,會將其轉換為數(shù)字然后再比較沼琉;如果符號兩側的值都是字符串時,不會將其轉換為數(shù)字進行比較拟赊,而會分別比較字符串中字符的Unicode編碼
var result = 5 > 10;//false
        
        result = 5 > 4; //true
        
        result = 5 > 5; //false
        
        result = 5 >= 5; //true
        
        result = 5 >= 4; //true
        
        result = 5 < 4; //false
        
        result = 4 <= 4; //true
        
        //console.log("result = "+result);
        
        //console.log(1 > true); //false
        //console.log(1 >= true); //true
        //console.log(1 > "0"); //true
        //console.log(10 > null); //true
        //任何值和NaN做任何比較都是false
        //console.log(10 > "hello"); //false
        //console.log(10 >= "hello"); //false
        //console.log(10 < "hello"); //false
        //console.log(10 <= "hello"); //false

        //console.log(true > false); //true

        //console.log("1" < "5"); //true
        //console.log("11" < "5"); //true
        
        //比較兩個字符串時刺桃,比較的是字符串的字符編碼
        //console.log("a" < "b");//true
        //比較字符編碼時是一位一位進行比較
        //如果兩位一樣,則比較下一位吸祟,所以借用它來對英文進行排序
        // console.log("abc" < "b");//true
        // console.log("bbc" < "b");//false
        //console.log("abc" < "bcd");//true
        //比較中文時沒有意義
        //console.log("你" > "我"); //false
        // console.log("月" > "我"); //true
        
        //如果比較的兩個字符串型的數(shù)字瑟慈,可能會得到不可預期的結果
        //注意:在比較兩個字符串型的數(shù)字時,一定一定一定要轉型
        console.log("11123123123123123123" < +"5"); //false

7屋匕、Unicode編碼
在字符串中使用轉義字符輸入Unicode編碼:\u四位編碼
在網頁中使用Unicode編碼:&#編碼; 注意:這里的編碼需要的是10進制
8葛碧、相等運算符
相等運算符用來比較兩個值是否相等,如果相等會返回true过吻,否則返回false

  • == :相等運算
    當使用==來比較兩個值時进泼,如果值的類型不同蔗衡,則會自動進行類型轉換,將其轉換為相同的類型乳绕,然后再比較
  • !=:不相等運算
    不相等用來判斷兩個值是否不相等绞惦,如果不相等返回true,否則返回false洋措;不相等也會對變量進行自動的類型轉換济蝉,如果轉換后相等它也會返回false
  • ===:全等
    用來判斷兩個值是否全等,它和相等類似菠发,不同的是它不會做自動的類型轉換王滤;如果兩個值的類型不同,直接返回false
  • !==:不全等
    用來判斷兩個值是否不全等滓鸠,和不等類似雁乡,不同的是它不會做自動的類型轉換;如果兩個值的類型不同糜俗,直接返回true

        var a = 10;
        
        //console.log(a == 4); //false
        
        //console.log("1" == 1); //true
        
        //console.log(true == "1"); //true
        
        //console.log(null == 0); //false
        
        /*
        undefined 衍生自 null
            所以這兩個值做相等判斷時踱稍,會返回true
         */
        //console.log(undefined == null);//true
        
        /*
        NaN不和任何值相等,包括他本身
         */
        //console.log(NaN == "1"); //false
        //console.log(NaN == "undefined"); //false
        //console.log(NaN == NaN); //false
        
        var b = NaN;
        
        //判斷b的值是否是NaN
        //console.log(b == NaN);//無法判斷吩跋,只會返回false
        /*
        可以通過isNaN()函數(shù)來判斷一個值是否是NaN
            如果該值是NaN則返回true寞射,否則返回false
         */
        //console.log(isNaN(b)); //true
        
        //console.log(10 != 5); //true
        //console.log(10 != 10); //false
        //console.log("abcd" != "abcd"); //false
        //console.log("1" != 1);//false
        
        //console.log("123" === 123);//false
        //console.log(null === undefined);//false

9、條件運算符
條件運算符也叫三元運算符锌钮,語法:條件表達式?語句1:語句2;
執(zhí)行流程:條件運算符在執(zhí)行時桥温,首先對條件表達式進行求值,如果該值為true梁丘,則執(zhí)行語句1侵浸,并返回執(zhí)行結果,如果該值為false氛谜,則執(zhí)行語句2掏觉,并返回執(zhí)行結果,如果條件的表達式的求值結果是一個非布爾值值漫,會將其轉換為布爾值然后在運算

        var a = 300;
        var b = 143;
        var c = 50;
        
        //a > b ? alert("a大"):alert("b大");
        
        //獲取a和b中的最大值
        //var max = a > b ? a : b;
        //獲取a b c 中的最大值
        //max = max > c ? max : c;
        
        //這種寫法不推薦使用澳腹,不方便閱讀
        var max = a > b ? (a > c ? a :c) : (b > c ? b : c);

10、運算符的優(yōu)先級
“杨何,” 運算符:使用,可以分割多個語句酱塔,一般可以在聲明多個變量時使用
使用,
運算符同時聲明多個變量:var a, b, c;
可以同時聲明多個變量并賦值:var a=1, b=2, c=3;
在JS中有一個運算符優(yōu)先級的表危虱,在表中越靠上優(yōu)先級越高羊娃,優(yōu)先級越高越優(yōu)先計算,如果優(yōu)先級一樣埃跷,則從左往右計算

12983127-335a1aca93359920.png

11蕊玷、代碼塊
在JS中可以使用{}來為語句進行分組,同一個{}中的語句我們稱為是一組語句邮利,它們要么都執(zhí)行,要么都不執(zhí)行垃帅,一個{}中的語句我們也稱為叫一個代碼塊延届,在代碼塊的后邊就不用再編寫了;
JS中的代碼塊挺智,只具有分組的的作用祷愉,沒有其他的用途,代碼塊內容的內容赦颇,在外部是完全可見的

五、JS操作屬性

DOM是為了操作文檔(網頁)的API赴涵,document是它的一個對象媒怯;BOM是為了操作瀏覽器的API,window是它的一個對象髓窜,常用BOM對象還有:alert扇苞、定時器等

<script type="text/javascript">
        /*
        DOM是為了操作文檔(網頁)的API,document是它的一個對象
        BOM是為了操作瀏覽器的API寄纵,window是它的一個對象
            常用BOM對象還有:alert鳖敷、定時器等
        */
        //整個文檔加載完之后執(zhí)行一個匿名函數(shù)
        window.onload = function(){
            document.getElementById('div1').title = "我看到了!";

            //變量oA代表整個a標簽
            var oA = document.getElementById('link1');
            oA.;
            oA.title = "跳轉到騰訊網"

            alert(oA.id);
            alert(oA.title);
        }
    </script>
</head>
<body>
    <div id="div1" class="div1" title="這是div元素程拭,看到了嗎定踱?">這是一個div元素</div>
    <a href="#" id="link1">騰訊網</a>
</body>

2、JS換膚

    <script type="text/javascript">
        window.onload = function(){
            var oLink = document.getElementById('link1');
            oLink.href = "css/2.css";

            alert(oLink.id);
        }

3恃鞋、js操作style屬性

        window.onload = function() {
            var oDiv = document.getElementById('div1');
            /*style屬性中的樣式屬性崖媚,沒有"-"號的,寫法相同*/
            oDiv.style.color = 'red';
            oDiv.style.background = 'gold';
            /*
            style屬性中的樣式屬性恤浪,帶"-"號的需要去掉"-"號畅哑,寫成小駝峰式
                例如:font-size屬性要寫為fontSize
            */
            oDiv.style.fontSize = '30px';
        }

4、js操作class

    <style type="text/css">
        .box01{
            width: 200px;
            height: 200px;
            background-color: gold;
        }
        .box02{
            width: 300px;
            height: 300px;
            background-color: red;
        }
    </style>
    <script type="text/javascript">
        window.onload = function() {
            var oDiv = document.getElementById('div1');
            // 由于class是js中的保留關鍵字水由,所以設置class屬性時荠呐,要寫為className
            oDiv.className = 'box02';
        }
    </script>

5、js中括號操作屬性

    <script type="text/javascript">
        window.onload = function(){
            var oDiv = document.getElementById('div1');
            //oDiv.style.color = 'red';//red必須加引號砂客,否則會認為它是一個變量泥张,引起來會認為它是一個值,賦值給=號左邊
            var attr = 'color';
            // oDiv.style[attr] = 'red';
            /* 通過[]操作屬性可以寫變量 */
            oDiv['style'][attr] = 'red';

            /* 通過innerHTML可以讀寫元素包括的內容 */
            alert(oDiv.innerHTML);//讀取標簽里面包裹的元素鞭盟,即“這是一個div元素”

            var oDiv2 = document.getElementById('div2');
            // oDiv2.innerHTML = '這是第二個div元素';//向div標簽中插入內容
            oDiv2.innerHTML = "<a ;//向div標簽中插入超鏈接標簽

            /*
            document.write和innerHTML的區(qū)別
            document.write只能重繪整個頁面
            innerHTML可以重繪頁面的一部分
            */
        }
    </script>

6圾结、JS函數(shù)

    <title>js函數(shù)</title>
    <script type="text/javascript">
        function aa(){
            alert('hello!');
        }

        /*
        //直接調用
        aa();
        */
    </script>

7、JS可控制換膚

    <script type="text/javascript">
        window.onload = function(){
            /* 提取行間事件 */
            var oBtn01 = document.getElementById('btn01');
            var oBtn02 = document.getElementById('btn02');

            oBtn01.onclick = skin01;//這里不能寫skin01()齿诉,這樣寫就馬上執(zhí)行了
            oBtn02.onclick = skin02;
        }
        function skin01(){
            var oLink = document.getElementById('link1');
            oLink.href = "css/1.css";
        }
        function skin02(){
            var oLink = document.getElementById('link1');
            oLink.href = "css/2.css";
        }
    </script>

8筝野、變量和函數(shù)預解析

    <script type="text/javascript">
        /*變量預解析*/
        /*alert(a);//只把變量a的聲明提前晌姚,賦值不提前,所以彈出undefined歇竟,表示它的值未定義
        // alert(c);//報錯挥唠,c沒有聲明,這是真正的未定義
        var a = 123;


        /*函數(shù)預解析*/
        myalert();//彈出hello!

        function myalert(){
            alert('hello!');
        }
    </script>

9焕议、匿名函數(shù)

    <script type="text/javascript">
        window.onload = function(){
            var oDiv = document.getElementById('div1');

            /*有名字的函數(shù)*/
            // oDiv.onclick = myalert;

            // function myalert(){
            //  alert('hello');
            // }

            /*匿名函數(shù)*/
            oDiv.onclick = function(){
                alert('hello');
            }
        }
    </script>

10宝磨、匿名傳參

<script type="text/javascript">
    window.onload = function(){
        var oDiv = document.getElementById('div1');

        changeStyle('color', 'gold');
        changeStyle('background', 'red');
        changeStyle('width', '300px');
        changeStyle('height', '300px');
        changeStyle('fontSize', '30px');

        function changeStyle(styl, val){
            oDiv.style[styl] = val;
        }
    }
</script>       

11、函數(shù)return關鍵字

    <script type="text/javascript">
        window.onload = function(){
            var oInput01 = document.getElementById('input01');
            var oInput02 = document.getElementById('input02');
            var oBtn = document.getElementById('btn');

            //寫入值
            // oInput01.value = 10;
            // oInput02.value = 5;

            oBtn.onclick = function(){
                var val01 = oInput01.value;
                var val02 = oInput02.value;
                var rs = add(val01, val02);
                alert(rs);
            }

            function add(a, b){
                var c = parseInt(a) + parseInt(b);
                // alert('計算完成');//執(zhí)行
                return c;//返回函數(shù)設定的值盅安,同時結束函數(shù)的運行
                // return;//不返回值唤锉,僅結束函數(shù)的運行
                // alert('計算完成');//不執(zhí)行
            }
        }
    </script>

12、流程控制語句

    <script type="text/javascript">
        /*
        流程控制語句
            - JS中的程序是從上到下一行一行執(zhí)行的
            - 通過流程控制語句可以控制程序執(zhí)行流程别瞭,
                使程序可以根據(jù)一定的條件來選擇執(zhí)行
        - 語句的分類:
                1.條件判斷語句
                2.條件分支語句
                3.循環(huán)語句
        */
        console.log('你好');
        alert('hello');
    </script>

13窿祥、條件判斷語句
使用條件判斷語句可以在執(zhí)行某個語句之前進行判斷,如果條件成立才會執(zhí)行語句蝙寨,條件不成立則語句不執(zhí)行晒衩。

  • if語句
  • 語法一:
                    if(條件表達式){
                        語句...
                    }

if語句在執(zhí)行時,會先對條件表達式進行求值判斷墙歪,如果條件表達式的值為true听系,則執(zhí)行if后的語句,如果條件表達式的值為false虹菲,則不會執(zhí)行if后的語句靠胜。if語句只能控制緊隨其后的那個語句,如果希望if語句可以控制多條語句届惋,可以將這些語句統(tǒng)一放到代碼塊中髓帽,if語句后的代碼塊(即{})不是必須的,但是在開發(fā)中盡量寫上代碼塊脑豹,即使if后只有一條語句

  • 語法二:
                    if(條件表達式){
                        語句...
                    }else{
                        語句...
                    }           

if...else...語句郑藏,當該語句執(zhí)行時,會先對if后的條件表達式進行求值判斷瘩欺,如果該值為true必盖,則執(zhí)行if后的語句,如果該值為false俱饿,則執(zhí)行else后的語句

  • 語法三:
                if(條件表達式){
                    語句...
                }else if(條件表達式){
                    語句...
                }else if(條件表達式){
                    語句...
                }else{
                    語句...
                }

if...else if...else:
當該語句執(zhí)行時歌粥,會從上到下依次對條件表達式進行求值判斷,如果值為true拍埠,則執(zhí)行當前語句失驶;如果值為false,則繼續(xù)向下判斷枣购。如果所有的條件都不滿足嬉探,則執(zhí)行最后一個else后的語句擦耀。該語句中,只會有一個代碼塊被執(zhí)行涩堤,一旦代碼塊執(zhí)行了眷蜓,則直接結束語句

  • switch語句
    條件分支語句
  • 語法:
                switch(條件表達式){
                    case 表達式:
                        語句...
                        break;
                case 表達式:
                        語句...
                        break;
                    default:
                        語句...
                        break;
                }

執(zhí)行流程:在執(zhí)行時會依次將case后的表達式的值和switch后的條件表達式的值進行全等比較,如果比較結果為true胎围,則從當前case處開始執(zhí)行代碼吁系。當前case后的所有的代碼都會執(zhí)行,我們可以在case的后邊跟著一個break關鍵字白魂,這樣可以確保只會執(zhí)行當前case后的語句汽纤,而不會執(zhí)行其他的case,如果比較結果為false碧聪,則繼續(xù)向下比較冒版,如果所有的比較結果都為false,則只執(zhí)行default后的語句

switch語句和if語句的功能實際上有重復的逞姿,使用switch可以實現(xiàn)if的功能,同樣使用if也可以實現(xiàn)switch的功能捆等,所以我們使用時滞造,可以根據(jù)自己的習慣選擇。

運算符:
1栋烤、算術運算符: +(加)谒养、 -(減)、 *(乘)明郭、 /(除)买窟、 %(求余)
2、賦值運算符:=薯定、 +=始绍、 -=、 *=话侄、 /=亏推、 %=
3、條件運算符:==年堆、===吞杭、>、>=变丧、<芽狗、<=、!=痒蓬、&&(而且)童擎、||(或者)滴劲、!(否)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市柔昼,隨后出現(xiàn)的幾起案子哑芹,更是在濱河造成了極大的恐慌,老刑警劉巖捕透,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聪姿,死亡現(xiàn)場離奇詭異,居然都是意外死亡乙嘀,警方通過查閱死者的電腦和手機末购,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虎谢,“玉大人盟榴,你說我怎么就攤上這事∮へ” “怎么了擎场?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長几莽。 經常有香客問我迅办,道長,這世上最難降的妖魔是什么章蚣? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任站欺,我火速辦了婚禮,結果婚禮上纤垂,老公的妹妹穿的比我還像新娘矾策。我一直安慰自己,他們只是感情好峭沦,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布贾虽。 她就那樣靜靜地躺著,像睡著了一般熙侍。 火紅的嫁衣襯著肌膚如雪榄鉴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天蛉抓,我揣著相機與錄音庆尘,去河邊找鬼。 笑死巷送,一個胖子當著我的面吹牛驶忌,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼付魔,長吁一口氣:“原來是場噩夢啊……” “哼聊品!你這毒婦竟也來了?” 一聲冷哼從身側響起几苍,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤翻屈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后妻坝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伸眶,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年刽宪,在試婚紗的時候發(fā)現(xiàn)自己被綠了厘贼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡圣拄,死狀恐怖嘴秸,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情庇谆,我是刑警寧澤岳掐,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站饭耳,受9級特大地震影響岩四,放射性物質發(fā)生泄漏。R本人自食惡果不足惜哥攘,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望材鹦。 院中可真熱鬧逝淹,春花似錦、人聲如沸桶唐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掌测。三九已至,卻和暖如春翘狱,著一層夾襖步出監(jiān)牢的瞬間坯约,已是汗流浹背熊咽。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闹丐,地道東北人横殴。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像卿拴,于是被迫代替她去往敵國和親衫仑。 傳聞我的和親對象是個殘疾皇子梨与,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容