zoukankan      html  css  js  c++  java
  • js 作用域学习

    1.var happy='huhu';
    alert(happy);
    //定义然后输出,no problem
    
    2.alert(happy);
    //没有定义,自然不ok
    
    3.happy='huhu';
    //直接给一个变量负值也是不会出错,因为这先当于创建了一个全局的变量。隐式声明了一个变量
    
    
    4.alert(happy);
    var happy='huhu';//happy==undefined;相当于。var haapy;-->alert(happy)-->happy='huhu';
    happy='huhu'//如果不写var的时候还是会出错
    
    
    5.var happy='huhu';
    function show(){
        alert(happy);//输出huhu,访问外部的变量
        happy='heihei';//虽然这里改变了外部变量,但是函数完以后会回收这里。所以你不停的刷机会是huhu
        //alert(happy);
    }
    show();
    
    
    6.var happy='huhu';
    function show(){
        alert(happy);//undefined,这里在局部查找变量的时候会找到一个声明确为定义的happy。
        var happy='heihei';    
    }
    show();
    
    
    7.var hppay=[1,2,3];
    function show(){
        if(typeof hppay=='undefined'){
            hppay=[];
        }    
        alert(hppay.length);//3 happy为array不为undefined
    }
    show();
    
    var hppay1=[1,2,3];
    function show1(){
        if(typeof hppay1=='undefined'){
            var hppay1=[];
        }    
        alert(hppay1.length);//0
    }
    show1();
    //相当于
    function show1(){
        var happpy; //此时alert(happy)为undefined
        if(typeof happy1='undefined'){
            var happy1=[];
        }    
    };
    
    
    8.alert(typeof happy);//function
    function happy(){};//采用函数定义式声明的方法,函数的定义会提前;而采用函数表达式声明的方法,函数的定义,跟采用var声明的局部变量一样,函数声明会提前,但函数定义位置不变,
    
    alert(typeof happy1);//undefined
    var happy1=function(){};//函数表达式的这种写法,相当于声明了一个变量。
    
    
    
    9.var happy={name:'huhu'};
    function happy(){
        alert('执行了');    //报错functon 不是一个函数,为什么这里不能提前了呢?
    }
    happy();
    //模拟代码如下
    alert(happy);//function
    var happy={name:'huhu'};
    alert(happy);//object
    function happy(){
        alert('执行了');    
    }
    
    happy();
  • 相关阅读:
    .net项目的svn Global ignore pattern
    Ionic开发中常见问题和解决方案记录
    iOS开发:mac使用svn管理项目
    iOS开发:本地数据存储-NSUserDefaults
    iOS开发:插件记录
    iOS开发:告诉git不要跟踪UserInterfaceState.xcuserstate
    发布 windows 10 universal app 时微软账号验证失败
    iOS开发:UINavigationController常用操作
    iOS开发:Swift多线程NSOperation的使用
    iOS开发:Swift多线程GCD的使用
  • 原文地址:https://www.cnblogs.com/wannasing/p/3067309.html
Copyright © 2011-2022 走看看