zoukankan      html  css  js  c++  java
  • 重拾javascript系列-JS声明详解之var

    前端 Js 声明语句详解 共三种。

    第一种 var 也是大家最熟悉的。

    语法 :

    var varname1 = value1, varname2, varname3..., varnameN;

    varnameN

    变量名。变量名可以定义为任何合法标识符。

    valueN

    变量的初始化值。该值可以为任何合法表达式。

    作用域:

    1.声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的。

    function x() {
      y = 1;      // 在严格模式下会抛出异常。
      var z = 2;
    }
    x();
    console.log(y);
    console.log(z);
    

    2.声明变量在任何代码执行前创建,而非声明变量只有在执行赋值操作的时候才会被创建。

    声明变量

    var a;
    console.log(a);                // undefined
    console.log('still going...'); // still going...
    

    非声明变量

    console.log(b);                // 会抛出异常。
    console.log('still going...'); // 永不执行
    

    由于以上三个区别,声明变量的错误会导致不可预测的结果。于是,无论是否在函数中,我们总是推荐使用声明变量

    在ECMAScript 5的严格模式(strict mode)下,给一个未声明的变量赋值会抛出错误。

    变量声明预解析:

    由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明。这意味着变量可以在声明之前使用,这个行为叫做“hoisting”。“hoisting”就像是把所有的变量声明移动到函数或者全局代码的开头位置。

    console.log(c);     // undefined
    var c = 'test hoisting';
    console.log(c);     // test hoisting
    

    可以理解为

    var c;
    console.log(c);     // undefined
    c = 'test hoisting';
    console.log(c);     // test hoisting
    

    js预解析 还有很多妙不可言的地方。我会在 重拾javascript系列-JS预解析机制 中详细讲解。
    前端狗-原文链接

  • 相关阅读:
    JMeter压力测试入门教程[图文]
    从技术转管理的困惑
    APP纯黑盒测试—某些可以试试的操作
    测试网站访问速度的方法(GTmetrix)
    【转】web测试技术经典案例(基础、全面)
    【转】H5页面的测试点总结
    【转】测试思考之——思想有多远,你就能走多远
    【转】测试趋势之我的观点
    线程学习一
    继承log4.net的类
  • 原文地址:https://www.cnblogs.com/xrds/p/5605187.html
Copyright © 2011-2022 走看看