JS 基本語法

JS 基本語法

表達式和語句

表達式

1 + 2 表達式的值為3

add(1+2) 表達式的值為函數(shù)的返回值

console.log 表達式的值為函數(shù)本身

console.log(3) 表達式的值為函數(shù)的返回值顶掉,為 undefined

語句

var a = 1 是一個語句

區(qū)別

  • 表達式一般都有值,語句可能有也可能沒有
  • 語句一般會改變環(huán)境(聲明挑胸、賦值)

大小寫敏感

  • var avar A 不同
  • objectObject 不同
  • functionFunction 不同

空格

大部分空格無實際意義痒筒,即對縮進無要求

加回車也不影響,但return 后面不能加回車嗜暴,return 加回車后會默認返回 undefined

標識符

  • 規(guī)則

    第一個字符凸克,可以是 Unicode 字母(包括特殊字母)或 $ 或 _ 或中文,后面的字符還可以是數(shù)字

  • 變量名是標識符

    var _ = 1

    var $ = 2

    var 你好 = 'hi'

  • 其他標識符用到再說

注釋

  • 好的注釋
    • 踩坑注釋
    • 為什么代碼會寫得這么奇怪闷沥,遇到什么 bug
  • 不好的注釋
    • 翻譯代碼
    • 過時的注釋,改了代碼沒改注釋
    • 發(fā)泄不滿的注釋

條件語句

if

語法

if (表達式) {
    語句1
}
else{
    語句2
}

其中花括號 {} 在語句只有一句的時候可以省略

面試

  • 表達式

    if (a = 1) 一個等號意為賦值咐容,三個等號判斷相等

  • 語句1 / 語句2

    可以嵌套 if else

    if (a > 10) {
      if (a > 100){
            console.log('a 大于 100')
        }
        else{
            console.log('a 大于 10 小于等于 100')
        }
    }
    
  • 縮進

    空格無意義舆逃,即縮進無意義

    let a = 1
    if (a === 2)
        console.log('a')
      console.log('a 等于 2')
    // a 等于 2
    // 等價于下段代碼
    let a = 1
    if (a === 2)
        console.log('a')
    console.log('a 等于 2')
    

無歧義的寫法

  • 最推薦

    if (表達式) {
        語句
    }else if (表達式) {
        語句
    }else {
        語句
    }
    
  • 次推薦

    function fn(){
        if (表達式) {
          return 表達式
        }
        if (表達式) {
            return 表達式
        }
        return 表達式
    }
    

switch

語法

switch (color) {
    case "red":
        //...
        break
    case "green":
        //...
        break
    default:
        //...
}

大部分時候要加 break,不然會接著執(zhí)行下一條件戳粒,少部分時候可以不加使多個條件利用同一語句

switch (n) {
    case 1:
    case 3:
    case 5:
        console.log("單數(shù)")
        break
    case 2:
    case 4:
    case 6:
        console.log("雙數(shù)")
        break
    default:
        console.log("n 大于 6")
}

問號冒號表達式

語法

表達式1 ? 表達式2 : 表達式3

作用

function max(a,b){
    return a > b ? a : b
}

簡化

function max(a,b){
    if (a > b){
        return a
    }
    return b
}

&&

語法

A && B && C && D

作用

取第一個假值或 D路狮,并不會取 true/false

常用

fn && fn() 如果函數(shù) fn 存在則調(diào)用,等價于

if (fn){
    fn()
}

||

語法

A || B || C || D

作用

取第一個真值或 D蔚约,并不會取 true/false

常用

a = a || b 如果 a 不存在則將值 b 賦值給 a奄妨,等價于

if (!a){
    a = b
}

循環(huán)語句

while

語法

while (表達式){
    循環(huán)體
}
  1. 判斷表達式的真假

    表達式為真時,執(zhí)行語句苹祟,再回到1

    表達式為假時砸抛,跳出 while 循環(huán)评雌,執(zhí)行后面的語句

面試

var a = 0.1
while(a!== 1){
    console.log(a)
    a = a + 0.1
}

以上這種寫法會出現(xiàn)死循環(huán),因為 a 為浮點數(shù)直焙,多次運算后數(shù)值不準無法等于1

for

語法

for (語句1; 表達式2; 語句3){
    循環(huán)體
}
  1. 執(zhí)行語句1

  2. 判斷表達式2

    表達式為真時景东,執(zhí)行循環(huán)體,再執(zhí)行語句3奔誓,再回到2

    表達式為假時斤吐,跳出 for 循環(huán),執(zhí)行后面的語句

面試

for (var i=0; i<5; i++){
    setTimeout(()=>{
       console.log(i+ ' ' + Math.random()) 
    },0)
}
//5 0.9303787923523408
//5 0.6899538665840761
//5 0.6810474325114657
//5 0.6942935806091048
//5 0.3565866074885371

上述代碼中厨喂, setTimeout 中的語句會在 for 循環(huán)結(jié)束后再執(zhí)行和措,因此輸出的都是5

而將 var 改成 let 后就不再存在此特性

for (let i=0; i<5; i++){
    setTimeout(()=>{
       console.log(i+ ' ' + Math.random()) 
    },0)
}
//0 0.4738938303873226
//1 0.47032133978554236
//2 0.12867142342927673
//3 0.8960148980685416
//4 0.8779046708652452

break

退出所有循環(huán)

continue

退出當前這次的循環(huán)

label

很少用,面試會考 5%

相當于定位符蜕煌,用于跳轉(zhuǎn)到程序的任意位置臼婆。標簽通常與break語句和continue語句配合使用,跳出特定的循環(huán)幌绍。

語法

foo: {
    console.log(1)
    break foo
    console.log('本行不會輸出')
}
console.log(2)

面試

{
    foo: 1
}

上述代碼不是對象颁褂。其中foo 是 label,語句是 1

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末傀广,一起剝皮案震驚了整個濱河市颁独,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伪冰,老刑警劉巖誓酒,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贮聂,居然都是意外死亡靠柑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門吓懈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歼冰,“玉大人,你說我怎么就攤上這事耻警「舻眨” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵甘穿,是天一觀的道長腮恩。 經(jīng)常有香客問我,道長温兼,這世上最難降的妖魔是什么秸滴? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮募判,結(jié)果婚禮上荡含,老公的妹妹穿的比我還像新娘咒唆。我一直安慰自己,他們只是感情好内颗,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布钧排。 她就那樣靜靜地躺著,像睡著了一般均澳。 火紅的嫁衣襯著肌膚如雪恨溜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天找前,我揣著相機與錄音糟袁,去河邊找鬼。 笑死躺盛,一個胖子當著我的面吹牛项戴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播槽惫,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼周叮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了界斜?” 一聲冷哼從身側(cè)響起仿耽,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎各薇,沒想到半個月后项贺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡峭判,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年开缎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片林螃。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡奕删,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出治宣,到底是詐尸還是另有隱情急侥,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布侮邀,位于F島的核電站,受9級特大地震影響贝润,放射性物質(zhì)發(fā)生泄漏绊茧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一打掘、第九天 我趴在偏房一處隱蔽的房頂上張望华畏。 院中可真熱鬧鹏秋,春花似錦、人聲如沸亡笑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仑乌。三九已至百拓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晰甚,已是汗流浹背衙传。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厕九,地道東北人蓖捶。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像扁远,于是被迫代替她去往敵國和親俊鱼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1 js 版本 1.1 歷史版本 ES3 ES5 ES6 ECMAScript 的第六版畅买,該版本正式名稱為 ECM...
    陳情閱讀 141評論 0 0
  • JS的基本語法學習總結(jié) 表達式與語句 1 + 2 表達式的值為3 add(1,2)表達式的值為函數(shù)的返回值 con...
    Amber886閱讀 127評論 0 0
  • 一并闲、JavaScript和ECMAScript的關(guān)系 1996年8月,微軟模仿JavaScript開發(fā)了一種相近的...
    瘋狂的蝸牛Dianna閱讀 454評論 0 0
  • 語句和表達式 語句(statement)是為了完成某種任務而進行的操作皮获,JavaScript 程序的執(zhí)行單位為行(...
    pang猴子閱讀 315評論 0 0
  • 表達式與語句 1+2表達式的值為3 add(1,2)表達式的值為函數(shù)的返回值 console.log表達式的值為函...
    蒟蒻_585a閱讀 127評論 0 0