2018-11-02day05JS基礎(chǔ)

1.JS基礎(chǔ)語法

//1.注釋,單行
/*多行注釋
*多行注釋
/
//2.標(biāo)識符
//js標(biāo)識符就是用來命名的(給變量命名,函數(shù)命名,對象命名)
//js中要求標(biāo)識符是字母數(shù)字下劃線外加$組成,數(shù)字還是不能開頭
//js中大小寫敏感
var abc = 100
console.log(abc)
// console.log 在控制臺打印括號中的內(nèi)容,和print一樣
//3.常用的數(shù)據(jù)類型
/

a.數(shù)字類型(Number)、布爾(Boolean)、字符串類型(String)、數(shù)組Array()、對象Object(),函數(shù)founction()
數(shù)字類型(Number)---包含所有的數(shù)字,整數(shù)和小數(shù) ,支持科學(xué)計數(shù)法,不支持復(fù)數(shù)

    100,13.5,-99
    console.log(4e2)
    //布爾.
    true
    false
    //字符串(String)雙引號或者單引號都可以
    'abc'
    "abc"
    //數(shù)組(Array),相當(dāng)于python的列表
    var p2=[2,43]
    console.log(p2)
    //(object):python中對象和字典的結(jié)合,不一樣的是這里的name,age是對象,值是屬性

    var p1= {
        name:'小明',
        age:99          
    }
    console.log(p1)
    //founction(函數(shù)):相當(dāng)于python中的函數(shù)
    function hanshu1(){
        console.log('我是函數(shù)')
    }
        hanshu1()
    /*
    b.typeof(數(shù)據(jù))- 查看數(shù)據(jù)類型
    
    c. new 類型名(數(shù)據(jù))--將數(shù)據(jù)轉(zhuǎn)換成指定的類型
    
    d.常用的特殊值underfined(相當(dāng)于python中的none) null(一般用來清空變量)
    */
    
    //4.格式 :js沒有縮進(jìn)的要求

2.JS中的變量

js變量
語法:
var 變量名
變量名 = 值

說明 :
var -是js關(guān)鍵字,聲明變量的時候可以要var,也可以不用,但如果不要var變量就必須賦值,否則報錯。
如果寫了var變量可以不賦值,會返回underfined

變量名--標(biāo)識符,不能是關(guān)鍵字。駝峰式命名規(guī)范 除了首單詞首字母多個單詞命名首字母大寫

//聲明變量
    var name1 = '小明'
    var name2
    name3 = '小花'
    
    //同時聲明多個變量
    var age,sex='男',score=100
    console.log(sex,age,score)
    
    //變量中的值:可以賦任何其他類型的值。字符串,數(shù)字等等....
    age,name = '老年人','小花'
    console.log(age,name)

3.運(yùn)算符

//js支持:數(shù)學(xué)運(yùn)算符,比較運(yùn)算符,邏輯運(yùn)算符,賦值運(yùn)算符,位運(yùn)算符
    //1.數(shù)學(xué)運(yùn)算符:+,-,*,%,++,--,**  -->不支持整除// 
    //++ (自加1),--(自減1)
    //變量++,變量--,++變量,--變量(變量必須要有值)符號在前在后都一樣
    //注意賦值的時候++和--寫在變量的前面和變量的后面對應(yīng)的效果不一樣

    var number = 10
    number++
    ++number
    --number
    console.log(number)

    //2.比較運(yùn)算符:>,<,==,!=,>=,<=,===,!==,<==,>==
    //比較運(yùn)算的返回值都是Boolean
    // ==(相等)----判斷值是否相等
    //===(完全相等)----判斷值和類型是否相等
    console.log(5==5)//T
    console.log(5=='5')//T
    
    console.log(5===5)  //T
    console.log(5==='5')//F

    //3.邏輯運(yùn)算符:&&(與),||(或),!(非)
    //運(yùn)算規(guī)則和python中的and、or、not一模一樣
    
    //4.賦值運(yùn)算符: = ,+= , -=  ,*= ,/= ,%=
    //和python一樣
    
    //5.位運(yùn)算符:&與 , |或 , ^異或 , ~取反,>>,<<
    //和python一樣
    
    //6.符合運(yùn)算:數(shù)學(xué)>比較>邏輯>賦值
    //可以通過加()來改變運(yùn)算順序

4.分之結(jié)構(gòu)

JS中的分之結(jié)構(gòu)有兩種,分別是if結(jié)構(gòu)和switch結(jié)構(gòu)
1.if語句
結(jié)構(gòu):
if(條件語句):{
代碼段1
}
說明:
if--關(guān)鍵字
(){}----固定寫法
執(zhí)行過程:
判斷條件語句是否為true,為true就執(zhí)行大括號{}中的內(nèi)容。不管縮進(jìn)問題。

b.if-else結(jié)構(gòu)
if(條件1){
代碼段1
}else{
代碼段2}
和python中的執(zhí)行過程一樣
c.else if 結(jié)構(gòu)和python中的elif節(jié)后一樣
if(條件1){
代碼段1
}else if(條件2){
}else if(條件3){
}else{
}
2.switch語句
switch(變量或者有值的表達(dá)式){
case 值1:{代碼段1}
case 值2:{代碼段2}
case 值3:{代碼段3}
case 值4:{代碼段4}
...
default:{代碼段5}
}
執(zhí)行過程:先計算表達(dá)式的值,然后從上往下一一和case后面的值進(jìn)行比較,找到第一個和表達(dá)式的值相等的case的值
然后將執(zhí)行后面所有case的代碼段,直到執(zhí)行完或者遇到break為止。
如果沒有值和表達(dá)式的值一樣,就執(zhí)行default后面的代碼段

 num =10
    switch(num){
        case 1:console.log('1')
        case 2:console.log('2')
        case 3:console.log('3')
        case 10:console.log('正確')
        case 11:console.log('我是11')
        break
        
        default:console.log('我是default')
    }
    //練習(xí):輸入0-6輸出1-7
    
    switch (week){
        case 0:console.log('周一')break
        case 1:console.log('周二')break
        case 2:console.log('周三')break
        case 3:console.log('周四')break
        case 4:console.log('周五')break
        case 5:console.log('周六')break
        case 6:console.log('周日')            
    }

5.循環(huán)結(jié)構(gòu)

for in 結(jié)構(gòu)和python中的循環(huán)結(jié)構(gòu)一樣,不過這里的for in取出來的是序列元素的下標(biāo),如果是對象取出來的則是對象的key(屬性名)
結(jié)構(gòu):
for 變量 in 序列{
循環(huán)體
}

for (x in 'abc'){
        console.log('abc'[x])
    }
    取出來的x是下標(biāo),在通過下標(biāo)取 出來元素

b. C語言的for循環(huán)結(jié)構(gòu)
for(表達(dá)式1;表達(dá)式2條件語句;表達(dá)式3){
循環(huán)體
}
直到思想:語句塊之間要用分號隔開!語句塊1里面寫循環(huán)開始前的準(zhǔn)備工作,例如聲明變量,語句塊1可以省略也可以設(shè)置多個值用逗號隔開。語句塊2里面寫執(zhí)行循環(huán)體的條件。用來控制執(zhí)行循環(huán)體的次數(shù)。語句塊3用來改變初始變量的值,改變循環(huán)次數(shù)
執(zhí)行過程:
先進(jìn)入語句塊1,判斷條件2是否為true,如果為true就執(zhí)行循環(huán)體,執(zhí)行完成后進(jìn)入語句塊3,執(zhí)行完語句塊3后在判斷2是否為true,如果為true就繼續(xù)執(zhí)行循環(huán)體,再進(jìn)入3...以此類推直到2位false。循環(huán)就結(jié)束~

c. while循環(huán)和python中的while循環(huán)一樣
結(jié)構(gòu):
while(條件){
循環(huán)體}
d. do while循環(huán)結(jié)構(gòu)--->先執(zhí)行一次循環(huán)體,在判斷條件是否為true,為true就繼續(xù)執(zhí)行,直到false為止,至少能執(zhí)行一次循環(huán)體
do{
循環(huán)體
}while(條件)
3.js中的break和continue和python中一樣

6.函數(shù)

函數(shù)還是分為聲明和調(diào)用,聲明的時候不會執(zhí)行函數(shù)體,調(diào)用的時候才會執(zhí)行函數(shù)體
1.函數(shù)的聲明,和python中一樣
function 函數(shù)名(參數(shù)列表){
函數(shù)體
return 返回值
}
說明:
function是聲明函數(shù)的關(guān)鍵字,
函數(shù)名 --駝峰式命名,見名知意
參數(shù)列表--如果沒有設(shè)置默認(rèn)值,相當(dāng)于默認(rèn)值為undefined
返回值--return或者undefined(none)

b.以聲明變量的方式聲明函數(shù) 這種相當(dāng)于把函數(shù)名字放在前面。函數(shù)名 =。。。
函數(shù)名 = function (參數(shù)列表){
函數(shù)體
return 返回值
}

function sum(m,n){
        return m+n
    }
    console.log(sum(2,3))

調(diào)用:函數(shù)名(實(shí)參列表)
調(diào)用的時候參數(shù)少傳多傳不會報錯,但還是保證每個都有就可以了。
只能通過位置參數(shù)傳參,關(guān)鍵字參數(shù)無效,還是按照位置傳參
js中不支持不定長參數(shù)

7.字符串

由單引號或者雙引號括起來的
1.轉(zhuǎn)義字符:和python中的一樣
2.字符串長度: 字符串.length
3.獲取單個字符:字符串[下標(biāo)]
注意: 下標(biāo)取值范圍是0 ~ 長度-1;超出范圍取到的是undefined;
js中沒有切片語法

    //轉(zhuǎn)義字符
    console.log('abc\n123')
    console.log('\tabc\'123')
    
    //字符串長度
    console.log('123abc'.length)
    
    //獲取單個字符
    str1 = 'hello world'
    console.log(str1[1])

2.相關(guān)運(yùn)算符
+ - 將兩個字符串拼接在一起產(chǎn)生一個新的字符串
(注意如果是一個字符串加上其他的數(shù)據(jù),會先將其他數(shù)據(jù)轉(zhuǎn)換成字符串再相加)
js不支持*運(yùn)算符
比較運(yùn)算(>, <. ==, !=, ===, !==)
>、< - 和python一樣,還是比字符編碼值的大小

    console.log('abc'+'hnm')
    console.log('abc'+100, 'abc'+true, 'abc'+[1,2,3])
//  str1 = new String([10, 20, 30])
//  console.log(str1)

//  console.log('abc'*3)   // NaN -> not a number
//  console.log(10/0)   // Infinity -> 無窮大
    console.log('abc' > 'abaaaa')

js的正則表達(dá)式寫在//兩個斜杠之間。

8.數(shù)組

數(shù)組就是python中的列表
1.數(shù)組是有序,可變的,里面的元素可以是任意類型的數(shù)據(jù)
2.增刪改查

a.查(獲取數(shù)組中的元素) - 不支持切片
數(shù)組[下標(biāo)]
數(shù)組.slice(開始下標(biāo), 結(jié)束下標(biāo)) - 切片

    arr1 = [1, 2, 3, 'abc']
    console.log(arr1[3])
    //獲取數(shù)組的長度
    console.log(arr1.length)
    
    
    result = arr1.slice(0, 2)
    console.log(result, arr1)
    
    /*
     b.增(添加元素)
     數(shù)組.push(元素) - 將元素添加到數(shù)組的最后
     */
    arr1.push('hello')
    console.log(arr1)
    
    /*
     c.刪(刪除元素)
     數(shù)組.pop() - 刪除最后一個元素
     
     數(shù)組.splice(開始刪除的下標(biāo), 刪除的個數(shù))  - 從數(shù)組指定的下標(biāo)開始刪除指定個數(shù)元素
     */
    arr1.pop()
    console.log(arr1)
    
    arr1.splice(2, 1)
    console.log(arr1)
    
    /*
     d.改(修改元素的值)
     數(shù)組[下標(biāo)] = 新值  - 修改指定下標(biāo)的元素
     
     數(shù)組.splice(開始下標(biāo),個數(shù), 多個其他參數(shù)) - 用其他參數(shù)替換開始下標(biāo)開始后的指定個數(shù)個元素
     */
    arr1 = [1, 2, 3, 4, 'abc']
    arr1[0] = 10
    console.log(arr1)
    
    arr1.splice(1,2, 'a','b', 'c')
    console.log(arr1)

9.對象

//js中沒有python的類,只有對象和構(gòu)造方法
/*1.對象的字面量
對象名 = {屬性名:屬性值, 屬性名2: 屬性值2...}
3.構(gòu)造方法 - 用來創(chuàng)建對象的
function 類名(參數(shù)列表){
this.屬性1 = 屬性值1
this.屬性2 = 屬性值2
...

return this //這句話必須寫
}
這兒的this類似python中的self,表示當(dāng)前對象
這兒的this類似python中的self,表示當(dāng)前對象

    function Person(name1, age1){
        //對象屬性
        this.name = name1
        this.age = age1
        this.tel = ''
        this.sex = '男'
        
        //對象方法
        this.eat = function (food){
            console.log(this.name+'在吃'+food)
        }
        
        return this
    }
    
    p2 = Person('小明', 18)
    p2.tel = '1727839923'
    p2.eat('面條')
    
    p3 = Person('小花', 20)
    p3.sex = '女'
    p3.eat('面包')
    ~~~
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評論 0 13
  • 本學(xué)期開學(xué)前幾天,由于已經(jīng)安排好的人員突然發(fā)生變動,學(xué)校領(lǐng)導(dǎo)安排我一個人擔(dān)任兩個班級的班主任。按照我曾經(jīng)提出的希望...
    雪后山閱讀 951評論 12 15
  • 大家好,看到今天的標(biāo)題你是不是很好奇,人只有一個大腦,何時擁有三個腦了?是怪物嗎?如果你想讓自己充滿感召力,就得贏...
    空之境婉容閱讀 549評論 0 0
  • 有人說 你的愛如水 我說 你的愛 勝水 山,沒有你的愛高大, 天,沒有你的愛廣闊, 地,沒有你的愛包容; 太陽,沒...
    Infinity_2099閱讀 331評論 0 2
  • 文/三兩個黃昏 1. 歲月很長,一不小心卻人走茶涼。 2. 最近兩天,一直都是宅著,確實(shí)沒怎么出去過?;蛟S是因?yàn)樵?..
    三兩個黃昏閱讀 346評論 2 3

友情鏈接更多精彩內(nèi)容