zoukankan      html  css  js  c++  java
  • JS变量声明提升

    JS的变量作用域是离它最近的封闭语块或代码块,包含他们内部的函数.

    在代码块中声明会被隐式的提升到封闭函数的顶部

    1 function (){
    2   var x=0;
    3   for(var i=0;i<n;i++){
    4     ....
    5   }
    6   var y=1;
    7 }

    上面的代码会被JS解释成下面的格式

    1 function (){
    2   var x=0;
    3   var y=1;
    4   var i=0;   
    5   for(i<n;i++){
    6     ....
    7   }
    8 }    

     有时候我们会不小心的在函数内部重新声明了已有的变量

    function text(x){
      ......
     for(var i=0;i<n;i++){
      var x=i; 
      }
    }

    如果我们把变量的声明和赋值看做两部份,就会比较好理解JS (如var x=0;看做var x; x=0;) 根据隐式提升规则

    function text(函数传入的值){
        var x;
        var x;
        x=函数传入的值
      ......
     for(var i=0;i<n;i++){
      x=i; 
      }
    }

    特殊情况 JS的异常捕获catch(x){} x的作用域仅在catch语块内

    function test(){
    var x="var",result=[];
    result.push(x);
    try{
    throw "exception";
    }
    catch(x){
    x="catch";
    result.push(x);
    }
    result.push(x);
    return result;
    }
    test();//["var", "catch", "var"]

      

  • 相关阅读:
    #与javascript:void(0)的区别
    单选框、复选框、下拉列表
    数据类型后的“?”
    c#中日期的处理
    日期控件html
    javascript获取后台传来的json
    Hashtable语法简介
    Hashtable(哈希表)
    Dictionary 字典
    远程SQL Server连接不上
  • 原文地址:https://www.cnblogs.com/hqqshe/p/5787844.html
Copyright © 2011-2022 走看看