zoukankan      html  css  js  c++  java
  • javascript入门教程(二):变量

    大家好,我从今天开始就会正式讲javascript的语法方面。
    变量

    js中的变量一般使用var来声明(es6的let不在本教程讨论范围内),可以用来定义任何种类的变量,如果只对变量进行了定义而没有赋值,这样变量会默认为undefined。
    
    var a=100; 
    var b="hello,world";
    var c=true;
    
    
    

    变量提升

    在js中,用var定义的变量会出现提升的效果,变量一般会提升到所在作用域的最顶部,简单来说就是,如果变量在函数中,就会提升到函数最顶部,如果在全局作用域(window)中,就会提升到所有代码的最顶部。
    这里给一个例子:
     console.log(a);
     var a=100;
    //输出结果为undefined
    

    这里实际上真正的代码是:

    var a;
    console.log(a);
    a=100;
    

    因为a提升到顶部后未被赋值,所以最后会输出undefined,而且亲测严格模式下变量提升不会受到影响。
    (提升:在js中多次声明一个变量,只有最后一次声明有效)

    没有块级作用域

    任何一对花括号中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域
    在java和c等语言中,块级作用域的效果很明显,比如下面这段代码:

    #include <stdio.h> 
    void main() 
    { 
    int i=2; 
    i--; 
    if(i) 
    { 
    int j=3; 
    } 
    printf("%d/n",j); 
    } 
    

    运行这段代码,会出现错误。可以看到,C语言拥有块级作用域,因为j是在if的语句块中定义的,因此,它在块外是无法访问的。

    但是在js中就不是这样了:

    for(var i=0;i<3;i++){}
    console.log(i); //输出3
    

    所以在js里面并没有块级作用域,它只有函数作用域,在函数内部用var定义的变量不能被外部访问到,因为函数调用结束后,变量会被自动销毁。

    (提示:在函数内部不用var直接声明的变量会默认为全局变量,比如:test=100;这个test在函数外部依然能被访问到,因为默认为全局变量,但是在严格模式下这样声明一个变量会出错)

    那么如何实现块级作用域呢?
    在js中有一种立即执行的函数,在里面定义的变量一般不会泄露到外界,由于这里还没有讲函数,所以我只稍微提一下,以后再好好讲。

    我只是把js每个部分的重点理清一下,具体的还是需要大家自己去看,比如关键字,注释,区分大小写等等,这套教程只适合在零碎时间去看,如果大家能有所收获,我就很满足啦。

    本文转载于:猿2048→https://www.mk2048.com/blog/blog.php?id=hhchj11kjhj

  • 相关阅读:
    ecshop学习入门
    php跳转页面代码
    PHP验证登录用户名和密码
    使用self关键字调用类体中的静态成员
    PHP中读取文件的几个方法
    MVC5 Entity Framework学习之更新相关数据
    global.asax文件的应用
    DbSet<TEntity> 类
    IDisposable接口详解
    bzoj 3240: [Noi2013]矩阵游戏 矩阵乘法+十进制快速幂+常数优化
  • 原文地址:https://www.cnblogs.com/10manongit/p/12610225.html
Copyright © 2011-2022 走看看