zoukankan      html  css  js  c++  java
  • 【Miaov】JS6-作用域


    作用域

    域:空间、范围、区域……
    作用:读、写

    浏览器:JS解析器
    至少分为两部分:

    1.找一些东西 根据var/function/参数等去找
    a=未定义
    所有的变量,在正式运行代码之前,都提前赋了一个值:未定义
    fn1=function fn1(){alert(2);}
    所有的函数,在正式运行代码之前,都是整个函数块
    ===》以上为JS的预解析;

    遇到重名的:只留一个,变量和函数重名了,就只留下函数

    2.逐行解读代码
    表达式:=+-*%/++--!

    表达式可以修改预解析的值

    alert(a);
    var a=1;
    function fn1(){alert(2);}

    --------------------------------------------------------------------

    alert(a); ------function a(){alert(4)}

    var a=1;

    alert(a);--------1

    function a(){alert(2);}

    alert(a);---------1

    var a=3;

    alert(a);-----------3

    function a(){alert(4);}

    alert(a);--------3

    a()----相当于3()-------会报错

    预解析:var function 参数……

    --------------------------------------------------------------------------

    总结:
    一个script就是一个域,是一个全局,script全局变量、全局函数 自上而下,函数 内部也是一块域

    作用域的过程

    先找东西后执行,

    执行的过程中遇到一些表达式就会改原来库里的东西,

    遇到函数调用就开了一个新的作用域,然后又重复找东西和执行的过程,

    if for while等不是作用域,定义变量时放在外边和放在里边是一样的,

    火狐不能对函数进行预解析
    全局变量和全局函数尽量放在外边,if和for循环最好不要定义变量和函数


    window.onload=function(){

    for(var i=0;i<aBtn.length;i++){
    aBtn[i].onclick=function(){
    alert(i); //3 没有以下内容的时候——有以下内容的时候弹出undefined——以下没有var的时候就是3


    aBtn[3].style.background="yellow";//没有aBtn[3]

    for(var i=0;i<aBtn.length;i++){
    aBtn[i].style.background="yellow";
    }
    }
    }
    }

    for里面有一个onclick函数的时候不能直接用i否则有很多后患

  • 相关阅读:
    Linux下autoconf和automake使用
    (转)跟我一起写MAKEFILE
    软件源(Software Sources)
    我的攒机(zuosi)过程
    《软件可靠性方法》笔记(一)---第二章 预备知识
    初识java泛型
    配置React Native的开发环境
    IOS原生方法实现二维码生成与扫描
    12个非常不错的免费HTML后台管理模板
    iOS 集成银联支付
  • 原文地址:https://www.cnblogs.com/chen7/p/4938501.html
Copyright © 2011-2022 走看看