• 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();
  • 相关阅读:
    docker 构建带健康检查的redis镜像
    HP服务器 开启ILO
    [转]如何取得当前正在执行的shell脚本的绝对路径?
    解决方案:centos运行shell脚本时报“$' ': 未找到命令”
    Js控制滚动条
    json_decode时含有中文是解码问题(json_decode返回为null)
    Phaser开源2d引擎 html5游戏框架中文简介
    js 开启video全屏模式
    修改mysql用户名密码 和 PHPmysqlAdmin对应密码修改
    用javascript判断一个html元素是否存在的五种方法:
  • 原文地址:https://www.cnblogs.com/wannasing/p/3067309.html
Copyright © 2020-2023  润新知