zoukankan      html  css  js  c++  java
  • javascript学习笔记——语句

    语句就是javascript整句和命令。

    表达式语句:

    count++;    alert(123);    a = 100;  .......

    复合语句和空语句:

    复合语句就是用逗号将多个语句连在一起形成复合语句。{x=1;y=2;alert(x);alert(y)}

    ps:在javscript中没有块级作用域,只有函数作用域。

    空语句包含0条语句,在部分时候也是有用的。

    如for(var i = 0; i < 3 ; a[i++] =0);在这里最后是一个分号,会执行for循环括号里面的语句。

    声明语句:

    var    声明一个变量。

    假如var声明在一个函数作用域内,那么这个变量就是局部作用域。

    ps:变量在函数作用域中有提前声明的问题

    window.onload = function(){
        var b = "hello world";
        function a(){
            console.log(b);  //变量提前声明,undifined
            var b = "world hello";  //由于变量b在这里定义了,所以导致变量提前声明
            console.log(b);
                        
        }
        console.log(b);
        a();
    }

    在上面的代码中,函数a中先输出b,但是b并没有在之前声明,但是在b之后有声明b=“world hello",根据变量在函数作用域提前声明的规则,那么var = b会提前到函数块的最顶上,所以第一个console.log(b)为undifined。

    function   定义函数,必须使用花括号,即使是一条语句,不可省略花括号。

    var a = function(){}  函数定义表达式方式

    function a(){}   函数声明方式

    这两种定义函数的方式是有区别:

    第一种表达式方式在定义之后,var声明的变量会提前到作用域的顶部,但是函数块还在原来的地方,所以假如在函数块之上调用函数就会报错。

    第二种函数声明方式在声明之后,变量和函数块都会提前到作用域的顶部,可以做作用于上下文,所以在函数块之上调用函数可以正常使用。

    window.onload = function(){
                    alert(b());   //"world hello"
                    alert(a());   //Uncaught TypeError: a is not a function
                    
                    //函数表达式中,只有变量声明被提前了,变量初始化代码依旧还在原来的位置
                    var a = function(){
                        return "hello world";
                    }
                    
                    //函数声明语句,函数名称和函数体都提前了,可以在声明之前调用它
                    function b(){
                        return "world hello"
                    }
                }

    条件语句:

    if    else if     switch

    if(expression)  statement    if里面的expression必须要写,statement也是必须要写的语句。

    switch可以处理多条分支的情况

    switch(expression){

         case (expression) :

              statement;

              break;

        ...........

         default :

             statement;

             break;

    }

    在switch中假如没有break,那么语句会一直执行直到switch最后一条语句。

    在函数中可以中return代替break。

    case的匹配是使用"==="进行比较的,所以匹配的时候不会进行类型的转换。

    switch的比较是从上到下的,default可以放到任何一个位置的。

    循环

    while     do/while    for     for/in

    do/while至少执行一次的循环,do是先执行语句,然后在通过while去进行判断

    for/in是用来遍历一个对象的属性的

    for(variable  in   object),即使object是一个原始值,也会转换成包装对象来遍历的。

    但是遍历也是有条件的,只能遍历可枚举的属性,而javascript核心方法和对象属性都是不可枚举的,所以在遍历的时候这些都没有办法遍历出来,而自己定义的对象属性和方法就可以遍历出来。

    如果for/in的循环体在还没有遍历到某属性的时候就删除了,那么这个属性就不会再获取到;如果for/in循环体中增加了一个某属性,那么它也不会被获取到。

    属性枚举的顺序,一般来说通过属性定义的先后顺序来枚举的。

  • 相关阅读:
    IOS Block-Block块的使用与理解
    IOS 多线程03-GCD
    IOS 多线程01-线程基础知识
    JavaScript高级-定义函数(类)方法
    互联网技术笔试总通不过?leetcode刷对了么
    Redis 内存满了怎么办? Redis的内存淘汰策略
    SpringBoot项目优化和Jvm调优
    中台的末路
    Java 应用中的日志
    Spring Boot 支持https
  • 原文地址:https://www.cnblogs.com/claireyu1219/p/6251685.html
Copyright © 2011-2022 走看看