JavaScript语法入门

175 阅读3分钟

表达式与语句

1.表达式

1+2表达式的值为3
add(1,2)表达式的值为函数的返回值
console.log表达式的值为函数本身
console.log(3)表达式的值为undefined

2.语句

var a = 1 是一个语句

3.表达式和语句的区别

表达式一般都有值,语句可能没有
语句一般会改变环境(声明,赋值)

4.备注

JavaScript大小写敏感
大部分空格回车没有实际意义,但renturn后不能回车

标识符

1.规则

第一个字符可以是Unicode字母或$或_或中文
后面的字符除了以上的还可以是数字

2.变量名是标识符

var _ = 1
var $ = 2
var __ = 3
var 你 = "hi"

3.常见报错

Uncaught SyntaxError : Invalid or unexpected token
未被捕获的语法错误:不合法的或未被期待的字符串

if语句

1.语法

if(表达式){语句1}else{语句2} 
{}在与剧中只有一句时可以省略

2.示例情况

var a=2
if(a=1){
    console.log('1')
}else{
    console.log('!1')
}
结果为1,一个=为赋值 判断用===

var a=1
if(a===2)
    console.log('a')
    console.log('a等于2')
结果为 a等于2 , 第一个{}被省略,被省略的{}只管第一个语句

switch语句

1.语法

switch(fruit){
    case "banana":
    //....
    break;
    case "apple":
    //...
    break;
    default:
    //...
}
不写break就凉凉了

?:表达式

1.语法

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

2.示例情况

function max(a,b){
    if(a>b) return a;
    else return b;
}
等价于
function max(a,b){
    return a>b ?a :b
}

如果n>0,return n,否则return -n
function abs(n){
    return n>0 ?n :-n
}

&&短路逻辑

1.逻辑

A && B && C && D
取第一个假值或D,并不取truefalse

2.示例

if(window.f1){
    console.log('f1存在')
}
等价于
window.f1 && console.log('f1存在')

||短路逻辑

1.逻辑

A || B || C || D
取第一个真值或D,并不取truefalse

2.示例

if(a){
    a=a
}else{
    a=100 //保底值
}
等价于
a = a || 100

while循环

1.语法

while(表达式){语句}
判断表达式的真假
当表达式为真,执行语句,执行完再次判断表达式的真假
当表达式为假,执行后面语句

2.注意示例情况

var a=0.1 //初始化
while(a!==1){ //判断
    console.log(a) //循环体
    a=a+0.1 //增长
}
浮点数不精确,可能出现0.9999 1.77777 跳过1,进入死循环

for循环

1.语法

for循环是while循环的方便写法
for(语句1;表达式2;语句3){
    循环体
}
先执行语句1,然后判断表达式2
如果为真,执行循环体,然后执行语句3
如果为假,直接退出循环体,然后执行后面语句

2.示例情况

for(var i=0;i<5;i++){
    console.log(i)
}
打印出 0,1,2,3,4
i的值为 5 

for(var i=0;i<5;i++){
    setTimeout(()=>{
        console.log(i)
},0)
}
打印出55,定时器执行5

break和continue

1.break 退出所有循环

for(var i=0;i<10;i++){
    if(i%2===1){
        break
    }
}
i的值为1

2.continue 退出当前一次循环

for(var i=0;i<10;i++){
    if(i%2===1){
        continue
    }else{
        console.log(i)
    }
}
打印出 0,2,4,6,8

3.特殊情况示例

for(var i=0;i<10;i++){
    for(var j=100;j<110;j++){
        if(i===5){
            break
        }
    }
   console.log(i)
}
打印出0-9 break只退出最近一个{} 外面的还要执行

lable语句

1.语法

{a:1}不是对象,是一个lable,返回值为1

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