zoukankan      html  css  js  c++  java
  • 变量作用域

    数据流向 父->子

    子函数可以引用外部变量



    变量查找 子->父

    当搜索一个变量时先从当前区域进行查找,再从上一级区域查找,找到则终止。



    同名变量作用域

    同名变量作用域互相独立不受影响,独立存在与所在区域有效

    'use strict';
    
    function foo() {
        var x = 1;
        x = x + 1;
    }
    
    function bar() {
        var x = 'A';
        x = x + 'B';
    }
    


    变量提升

    在执行函数时,会先搜索所有存在的变量名(但不会对变量赋值),再顺序执行语句。

    console.log(a); // undefined 表示存在a但无值
    var a=10;
    
    // 等同于
    var a;
    console.log(a);
    a = 10;
    
    // 正确写法,变量提前
    var a=10;
    console.log(a);
    


    命名空间

    全局变量污染

    function alert() {
        return 1;
    }
    
    alert("这就是全局变量污染") // 1
    

    减少全局变量污染的最好方法是命名一个对象,将自定义变量全作为他的属性。很多知名js框架都是采用该方法

    // 唯一的全局变量MYAPP:
    var MYAPP = {};
    
    // 其他变量:
    MYAPP.name = 'myapp';
    MYAPP.version = 1.0;
    
    // 其他函数:
    MYAPP.foo = function () {
        return 'foo';
    };
    


    块级作用域

    我们知道js变量只能在当前作用域内使用,该作用域所指的是当前函数作用区域

    function aa(){
        for(var i=1; i<100; i++ ){
            ...
        }
        i+=1; // i可以使用,为101
    }
    

    在es6中采用let来明确指代块级作用域

    function aa(){
        for(let i=1; i<100; i++ ){
            ...
        }
        i+=1; // SyntaxError:
    }
    


    Const

    constlet一样都是块级作用域,const指代于常量,let指代于变量

    夹具
  • 相关阅读:
    最简单的as调用js
    搜集API
    Northwind SQL Code
    玩Gmail :)
    ASP.NET操作服务 注意权限
    在Windows 7下安装Oracle 11g的解决方法
    windows 7 下安装了 oracle p6810189_10204_Win32
    ClientScript遇到UpdatePanel
    sql server 2005 ,恢复xp_cmdshell的办法
    SQL查询表、视图、存储过程、函数的创建和变更时间
  • 原文地址:https://www.cnblogs.com/jilaokang/p/8645947.html
Copyright © 2011-2022 走看看