JS语法总结

Get Started

• 表达式、语句、标识符
• if … else语句
• while、for循环语句

表达式与语句

• 表达式
1+2表达式的值为3
add(1, 2)表达式的值为函数的返回值
console.log表达式的值为函数本身
console.log(3)表达式的值为undefined(这个函数打印出来的是3)
• 语句
var a = 1
值也是undefined
• 二者的区别
○ 表达式一般都有值,语句可能有也可能没有
○ 语句一般会改变环境(声明、赋值)
○ 上面两句话并不是绝对的

大小写敏感

不要写错
var avar A是不同的
object和Object是不同的
function和Function是不同的
具体说明在后面

空格

• 空格没有什么实际含义(在不影响断句的情况下)
加回车大部分时候也不影响
只有一个地方不能加回车,那就是return后面(JS的特殊之处)
function {
return (undefined)
3
}

标识符

• 规则
第一个字符,可以是unicode字母或者或者_或者中文 后面的字符,除了上面说的还可以加数字 • 变量名是标识符 ``` var _ = 1 var = 1
var ______ = 6
var 你好 = 'hi'
```
• 其他标识符用到再说

注释

• // 单行注释
• /* */ 多行注释

注释的分类

• 不好的注释
把代码翻译成中文
过时的注释
发泄不满的注释
• 好的注释
踩坑注释
为什么代码会写的这么奇怪,遇到什么bug

区块block

• 把代码包在一起
{ let a = 1 let b = 2 }
• 常常与if/for/while合用

if语句

• 语法
if(表达式){语句1}else{语句2}
{}在语句只有一句的时候可以省略,但是不建议
• 变态情况
表达式里可以非常变态,如 a = 1
语句1里可以非常变态,如嵌套的if else
语句2里可以非常变态,如嵌套的if else
锁进也可以很变态,如面试题常常下套
a = 1 if( a === 2 ){ console.log('a') console.log('a等于2')
若用逗号','将两句相连则都不执行,逗号代表这句话没完。分号';'则是这句话完了。
要用等于号就用===,因为JS的==很垃圾
程序员戒律:使用最没有歧义的写法

最推荐的写法

if (表达式) {
  语句
} else if (表达式) {
  语句
} else {
  语句
}

次推荐写法

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

switch语句

• 语法(与C相似)

    swutch(){
      case 1:
      case 2:
        break;
      case 3:
        break;
      defualt:
        break;
    }

• break
需要注意

问号冒号表达式

表达式1? 表达式2: 表达式3

&&短路逻辑

A&&B&&C&&D 取第一个假值或D
并不会取true/false

||短路逻辑

A||B||C||D取第一个真值或D
并不会取true/false

while循环

• 语法
while(表达式){语句}
判断表达式真假
当表达式为真,执行语句,执行完返回到while再判断
当表达式为假,跳出,执行while循环后面的语句
• 其他
do…while用的不多(note:在写C的时候公司会要求代码规则,一般不用这个)
坑:Chrome浏览器打印while(i<10)的时候会多一个10
但是while后面有别的代码的时候就是正常的
var 1 = 0 while(i<10){ console.log(i) i = i+1 } console.log('done')
坑:浮点数运算因精度问题有时得不到一个整数值,导致死循环

for循环

• 语法糖
for是while循环的方便写法
• 语法

    for(语句1;表达式2;语句3){
      循环体
    }

先执行语句1,然后判断表达式2
若为真,执行循环体,然后执行语句3
若为假,直接跳出循环,执行后面的代码
代码:setTimeout是过一段时间执行,所以打印出来5个5

    for(var 1 = 1 0; i < 5 ; i++){
      setTimeout(()=>{
         console.log(i)
      },0)
    }

↑for循环中若使用let,则会打印出0,1,2,3,4(将setTimeout特殊处理)
break和continue
退出所有循环(最近的一层循环)。退出当前一次循环

label语句

用的很少
• 语法

    foo: {
      console.log(1);
      break foo;
      console.log('本行不会输出');
    }
    console.log(2);

• 问题

    {
      foo: 1
    }
    

上面的东西是什么
答案:这是一个label,它的语句就是1
Chrome做了优化会把它当成对象,后面加了个分号;就输出1了
Firefox是标签foo的内容是1然后就输出1
ps:大部分都是与C语言相似

常用写法总结

• 条件语句
○ if … else …
○ switch
○ A ? B:C
○ A && B
○ fn && fn()
○ A || B
○ A = A || B

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 一、介绍 31.什么是js js是javascript的缩写。是一门专门用来处理网页中的行为的脚本语言,也是web...
    龙神海王阅读 432评论 0 0
  • 1 js基础语法1.单行注释/*多行注释多行注释/2.标识符标识符就是用来命名的(给变量、函数、对象命名)js中要...
    圣咸鱼阅读 344评论 0 1
  • 5.1 什么是js 1.什么是jsjs是JavaScript的缩写,是web标准中的行为标准,负责网页中变化的部分...
    2333_11f6阅读 291评论 0 0
  • 标签中js的引入方式: (1).行内式:<标签名 onclick="js代码"> ;(2).嵌入式:(3).链接式...
    XGCrown阅读 507评论 0 0
  • 一、js基础 1.什么是js js是JavaScript的缩写。是一门专门用来处理网页中的行为的脚本语言,也是we...
    xdxh阅读 343评论 0 1