JS基本语法

表达式和语句

1、表达式

1+2表达式的值为3
add(1,2)表达式的值为函数的返回值,只有函数有返回值
console.log 表达式的值为函数本身
console.log(3)表达式的值为undefined,因为没有名字为3这种可以调用的函数,如果需要打印3,则需要写成console.log(‘3’)

2、语句

var a=2 是一个语句

3、区别

• 语句无值,表达式有
• 语句一般会声明/赋值,从而改变环境
• 这些区别不绝对

4、坑

①大小写敏感

• var a 和 var A 是不同的
• object 和 Object 是不同的
• function 和 Function 是不同的

②空格与回车

• 只要不影响断句,大部分空格没有实际意义
var a = 1 和 var a=1 没有区别
• 加回车大部分时候也不影响
• ★只有一个地方不能加回车,那就是 return 后面,加了回车会自动隐性地补上 undefined,回车后面的值不会上来。

标识符

• 第一个字符,可以是 Unicode 字母或$或_或中文
Tips:Unicode 字母不只包含英文字母,还有希腊字母德语字母法语字母等,都可以用
• 后面的字符,除了上面所说,还可以有数字
• 标识符不能以数字开头、ES中的关键字或者是保留字

var _=1
var $=2
var_____=1
var 你好='hi'

Tips:上述都是合理的,但是最多不要用多于2个_作为变量名,因为很难判断,其次最好使用驼峰命名法。即首字母小写,每个单词的开头字母大写,其余字母小写,如helloWorld

注释

// 这是单行注释
/*
 这是
 多行
 注释
*/

Tips:好的注释一般是自己踩坑的注解以及为什么代码会写得很奇怪,也就是为什么要这么写;不好的注释是把代码翻译成中文,过时的注释、发泄不满的注释,很大的程度是再说我写了什么。

区块block

是用来把代码包在一起,也就是{}

{
   let a=1
   let b=2
}

Tips:block 一般不会单独用,一般是跟if/for/while/function一起用

条件语句

1、if else语句

①语法

• if(表达式){语句 1}else{语句 2}
• {}在语句只有一句的时候可以省略,不建议这样做

②坑

• 表达式里可以非常变态,如a=1

a=2
if(a=1{
console.log('a为1')
}else{
console.log('a为2')
}
运行结果:a为1。应为a=1是把1赋值给a。正确写法是:a===1

• 语句1语句2中嵌套if else

if(a<100)
else if(a>1000){console.log('a')}
else{console.log('b')}

• 缩进的坑

a=1
if(a===2)
  console.log('a')
  console.log('a等于2')
运行结果:a等于2,因为这里是省略了{},如果省略只能管到后面一句代码。
③最推荐写法
if(表达式){
  语句
}else if(表达式){
  语句
}else{
  语句
}
④次推荐写法
function fn(){
  if(表达式){
    return 表达式
  }
  if(表达式){
    return 表达式
  }
  return 表达式
}

2、switch语句,不推荐

• 基本语法

switch(条件){
  case xxx:
     // ...  
  break;
  case xxx:
     // ...  
  break;
  .......
  default:
  // ...
}

• 例子

switch(fruit){
   case 'banana':console.log('banana')
   break;
   case 'apple':console.log('apple')
   break;
}

Tips★:大部分时候省略break会出现很大的麻烦,尽量少用这个语句

3、问号冒号表达式(三元表达式?:)

1、语法
(条件) ? 表达式1 : 表达式2

如果条件为true,则返回表达式1的值,否则返回表达式2的值。

2、tips:

• 能用问号冒号的时候,就不要用 if else
• 只可以用于if else里语句都只有一句的情况

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

4、&&短路逻辑

A&&B&&C&&D取第一个假值或若都为真,则取D,并不会取 true/false

5、||短路逻辑

A||B||C||D取第一个真值或最后一个D,并不会取true/false。
例如A=A||B,B就是A的保底值,如果A存在,那就是A等于A,否则A=B。

循环语句

1、while循环----当…时

①语法

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

②坑
var a=0.1//初始化
while(a!==1){//判断
  console.log(a)//循环体
  a=a+0.1//增长
}
//会出现死循环,这是因为上面的浮点数不精确造成的问题,所以+0.1可能加着加着就会变成0.999而不是1,所以永远到不了1

2、do…while----用的不多

do…while循环与while循环类似,唯一的区别就是先运行一次循环体,然后判断循环条件。

do
  语句
while (条件);
// 或者
do {
  语句
} while (条件);

3、for循环

• for 是 while 循环的方便写法,for 循环是 while 循环的升级写法
• while 循环有一个问题是,你如果缺了一部分就会死循环,比如说没有写初始化,死循环,没有写判断或者判断写错了,死循环,你没有写循环体,那你循环也没什么用,没有写增长,死循环

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

• 先执行语句 1(语句 1 是用来初始化的)
• 然后判断表达式 2(表达式 2 是用来判断的)
• 如果为真,执行循环体,然后执行语句 3(语句 3 是自增用的)
• 如果为假,直接退出循环,执行后面的语句
tips:如果表达式 2 成立,先执行循环体,再执行语句 3,注意这个再,这是考点。执行循环体后,一定会去执行语句 3,除非你有 break。

②坑

★ i的值和打印的情况

for(var i=0;i<5;i++){
    console.log(i)
}
运行结果:0 1 2 3 4
for(var i=0;i<5;i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
运行结果:5 5 5 5 5
原因:因为setTimeout过一会时间才打印,先把for循环执行完,这时i=5,所以打印出了55
for(let i=0;i<5;i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
运行结果:0 1 2 3 4

break和continue

break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。
break 退出所有循环,只会退出离它最近的for。

for (var i = 0; i < 5; i++) {
  console.log(i);
  if (i === 3)
    break;
}
运行结果是:0 1 2 3

continue退出当前一次循环

for(var i =0;i<7;i++){
    if(i%2===0) continue;
  console.log(i);
}
运行结果:1 3 5 

label

JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。

label:
  语句

标签通常与break语句和continue语句配合使用,跳出特定的循环。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

Tips:

{
  foo:1
}
这是一个标签
var a={
  foo:1
}
这是一个对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值