zoukankan      html  css  js  c++  java
  • (十八)作用域、作用域链、查找变量案例分析

    作用域由创建时候决定的并不是执行时候
    • 案例一:
    var x = 10;
    function fn(){
    	console.log(x);
    }
    function show(f){
    	var x = 20;
    	f();
    }
    show(fn);	//10
    

    • 案例二:
    var fn = function(){
    	console.log(fn)
    }
    fn();//输出是函数本身;局部作用域到全剧作用域查找
    
    • 案例三:
    var obj = {
    	fn:function(){
    	console.log(fn)//此时fn的作用域中找不到fn;因此到全局中找;但是全局没有;可以改为this.fn或者obj.fn那么就输出这个函数
    	}
    }
    console.log(obj.fn)//undefined;
    
    • 案例四:
    var a = 2;
    function fn(){
    	console.log(a);
    	var a = 3;
    }
    fn();	//a is undefined
    

    此处存在变量提升;但是变量声明之后并没有直接赋值而是undefined;预处理顺序:声明a;console出a;然后赋值a

    var a = 2;
    function fn(){
    	console.log(a);
    	a = 3;	//此时的a是全局变量
    }
    fn();	//2
    
    • 案例五:
    function b(){}
    var b;
    console.log(typeof b);	//function
    

    变量先预处理;再是函数预处理

    var c = 1;
    function c(c){
    	console.log(c);
    	var c = 3;
    }
    c(2);	//此处会报错c is not a function;
    

    函数并不会执行整个顺序是:声明变量c;声明函数c;执行变量赋值此时c已经是2;因此执行c(2)会报错。

    预处理(代码执行之前):
    • 用var声明的变量
    • 收集用function声明的函数
    函数与变量的区别
    • 名=函数 (函数)
    • 名=非函数 (变量)
  • 相关阅读:
    python-web 创建一个输入链接生成的网站
    查看端口有没被占用
    bs的过滤器功能例子
    爬图片的方法
    python 下载图片的方法
    request 里面参数设置 (有空瞄下)
    python 面向对象 初始化(类变量 和 函数内变量)
    访问https请求出现警告,去掉警告的方法
    find 和 find_all 用法
    D3的基本设计思路
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675297.html
Copyright © 2011-2022 走看看