初学杂烩——第五章 语句

第四章 核心关键词(表达式)-->短语 对应过来 语句就是js的整句或命令,以分号结束。

表达式是计算一个值,而语句是使得某件事发生,或者说某些值发生了改变---即带有“副作用”。

表达式语句:带有副作用的表达式,诸如赋值函数调用,可以单独作为语句使用。

复合语句和空语句:用花括号括在一起的语句是一条复合语句;空语句,比如if(flag);这个条件语句之后有且仅包含一条语句,这个例子里便是空语句

空语句的实例(确实是有它的用处的):for(i=0;i<a.length;a[i++]=0); 

PS:语句块结尾不需要分号;没有块级作用域

PS:温馨提示,在使用空语句的时候最好做一点注释……

 

声明语句:用于声明新变量(var)或定义新变函数(function)等。(通过创建变量和函数可以更好地组织代码和语义)

PS:关于变量声明,优先把需要赋值的语句写在前面;没赋值默认为undefined

重申:

  1.在同一作用域下,变量声明都会被提到顶部执行

  2.多次声明变量不会多变量,也不会影响变量

函数定义用function(两种语法结构)

first:

  var f=function(){};

second:

  function f(){};

函数声明:感觉可以把这个和定义里面的second混在一起考虑

  function funcname([arg1 [, arg2 [..., argn]]]) {

    statements

  }

PS:函数的花括号是必须滴;函数声明的变量是不能删除,但是可以重写。

sepcial word:

1.ECMAScript标准规范并没有将函数声明归类为真正的语句——函数声明并不能出现在if语句,while循环或其他任何语句中……

2.声明函数和函数定义的不同有点类似变量的声明,举个例子:var a=1;

如果这个a是全局变量,那么javascript初始化好的时候,便已经将a声明了,但是此时a是undefined,而只有等到执行这条语句,a才变成1(具体参考第三章)。

对应函数的意思就是,你可能是在最后面写的函数,但是你依旧可以在他之前调用这个函数,比如:

<script>
console.log(hello());
function hello(){
return "I can";
}
</script>

没有任何错误,就是因为函数声明的结果。与变量定义的区别是函数声明不仅仅提前了函数名,还有函数体

3.将函数声明放在其他语句内的做法不具备可移植性。(这句话目前还不是很懂……以后如果遇到了这种实例再进行研究)

4.delete删除不了var或者function声明的函数或者变量。(这个非常非常的重要,可以自己尝试一下)

用于改变语句的默认执行顺序:

  条件语句:分支,决策点

    if(else), else if, switch(当所有分支都依赖于一个表达式的值的时候)

    PS:switch的结构---按顺序执行,并不是case后面仅仅跟一条语句

switch(expression) {
     case "表达式":
    语句
    break;
   [default:语句] }/*这里的表达式与expression的比较用的是"==="*/

    switch里的case表达式是在运行时计算的,所以尽量用常量,否则会使得效率变低。

  循环语句:for,while,do/while,for/in

    while 直到不满足条件时跳出循环……

    do/while:特点至少循环一次【这种场景不常见】

    do {

      statement(可以不用大括号……)

    }while(expression);

    for/in:方便遍历对象属性成员 eg:for(var p in o) console.log(o[p]);

    非常有趣而巧妙的获取key数组的方法(主要是计算“p”的表达式并且会进行赋值),例:(前提是可枚举的)

        var o={x:1,y:2,z:3};
        var a=[],i=0;
        for(a[i++] in o);

    PS:一般来说,代码写中定义的所有属性和方法都是可枚举的。

    注意,只有"可枚举"的属性才能遍历到,比如toString()(之类由JavaScript语言核心所定义的内置方法就不是"可枚举的")

    特殊手段??/*目前不详*/可以将可枚举属性变为不可枚举

    PS:继承的自定义属性也可以枚举出来。

    在for/in循环体中:

      删除(未枚举)——>不会枚举到

      定义(新属性)——>(通常)不会枚举到;(特殊)有些实现可以枚举增加的继承属性

    属性枚举的顺序:*(暂不深入——到时候可以根据具体情况具体分析)

    从这里可以看出:for/in是要慎用的。

 

  跳转语句:continue,break,return,throw(暂不深入)

    标签语句——语句是可以添加标签的,由标识符和冒号组成。

    break:可以"跳出"任何闭合的语句块。但是不能跳出函数

    continue:只能在循环体内使用,默认跳出一层,可以跳出多层嵌套的循环体逻辑;for和while的不同

    return:默认返回undefined

    throw:try catch finally

 

  其他语句类型:

    width:

    debugger:

    use strict:

    

PS:JavaScript程序无非是一系列可执行语句的集合。

(上周实在太忙了,所以没有更成,所以这周要加更,这周加这章 至少更新两章)未完待续……

 

转载于:https://www.cnblogs.com/luchaohai/p/4954078.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值