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

    1、梳理知识点
    循环嵌套完成图形题  
    函数定义 : function fn(){}
    函数调用 : 函数名()
    函数参数 : 
        形参 和 实际参数
    函数返回值 : return  
     
    2、变量的作用域
    作用域 : 作用范围
     
    全局变量 :
        作用范围 : 从程序开始到程序结束   即在script标签内
        在函数体外部定义的变量或内部没有var的变量就是全局变量
     
    局部变量 :
        作用范围 : 函数体,从函数开始到函数调用结束后  函数调用结束后 局部变量自动销毁 
        在函数体内部通过var明确定义的变量 或 形参
    函数体中的变量如果操作的是全局变量,该变量就是全局的,如果操作的是局部变量,该变量就是局部的 
     
    问题来了 : 如何确定函数体中的变量操作的是局部的还是全局的???
     
    作用域链 :  函数体中在改变某个变量的值时, 都会向上查找 ,如果查找到局部变量 , 操作的就是局部变量 ,如果没有找到局部变量,继续向上(函数体外部)查找,如果查找到 ,操作的就是全局变量,如果函数内部和外部都没有查找到 ,判断这个变量定义是否var 有var 就是局部变量 ,没有var 就是全局变量
    为了防止全局变量污染 尽量避免出现全局变量
     
    3、变量提升 
    在函数体内部定义的变量  会将变量提升到函数的最顶端  只提升声明,但不赋值
    function fn(){
        alert(a);
        var a = 10;
    }
    fn();
     
    变量提升后
    function fn(){
        var a;
        alert(a);
        a = 10;
    }
     
     
    4、js解析器(扩展)
    浏览器内部有个专门解析js程序的地方,这个空间就叫做js解析器
    解读js程序 有两个步骤:
       1、预解析   找一些东西  var  function 
            找到了var  就意味着找到了一个变量  会提前为这个变量赋予一个值 undefined
            找到了function 就意味着找到了一个函数  会提前为这个函数名赋予一个值 这个值就是函数块本身 
            找到了两个function,如果函数重名  后一个会覆盖前一个
            如果找到的变量和函数重名  保留函数
       2、逐行解读代码  如果遇到表达式 改变了变量的值  那么 预解析时 仓库中变量的值也会随着发送变化
     
    5、函数的递归调用
    递归 : 函数自己调用自己
    缺点 : 消耗性能
    递归本质 : 实现循环
     
     
    6、函数的实参副本(扩展)
    arguments
    1、必须出现在函数体中 
    2、含有一个length属性  代表实参个数
    3、取出arguments中的实参  arguments[下标]  下标从0开始  最大下标:  arguments.length-1
     
    7、函数和事件的关系
    事件 : 对页面上某个元素的操作
    事件三要素 : 
        事件源   名词   页面上的某个元素 
        事件     动作   
        事件处理程序    函数
    单击按钮 : 
        oBtn.onclick = function(){  ....  }
    常见事件 : 
        鼠标事件 : 
            onclick 单击 
            ondblclick 双击
            onmouseover 鼠标滑过
            onmouseout  鼠标离开
     
            onmouseenter 鼠标滑过
            onmouseleave 鼠标离开
     
            onmousedown 按下
            onmouseup  抬起
            onmousemove 移动
     
        表单事件(针对表单操作) :
            onsubmit  表单提交
            onfocus  获取焦点
            onblur   失去焦点
            onchange  改变(一般用于 下拉列表)
     
        键盘 :
            onkeyup  抬起
            onkeydown  按下
            onkeypress 按下+抬起
     
        页面事件 :
            onload 页面加载事件      
            onload事件处理程序中的代码 会等到页面所有内容(css img html 等) 全部加载完成后执行       
     
    8、js对元素的操作
    要做事 先找人
    提前找到要操作的元素 obj
     
    样式操作 :
        obj.style.样式 = 值  设置某个元素的样式     注意 :小驼峰的写法  fontSize  
     
    属性操作(标签的属性  <img src=''>) :
        obj.属性 = 值     obj.src = ""
     
    内容操作 :
        普通标签内容 :
            obj.innerHTML = ""  设置内容
        表单内容 :
            obj.value = ""  设置  
  • 相关阅读:
    Jasmine入门
    最近面试js部分试题总结
    最近面试前端面试题整理(css部分)
    开发自己的类库
    关于FEer发展方向的思考
    工作那些事(八)工作的目标——《360周鸿祎在新员工入职培训上的讲话》读后感
    工作那些事(七)选择与被选择
    工作那些事(六)谈谈好的编程习惯的好处
    工作那些事(五)谈谈项目资料整理和积累
    工作那些事(四)大公司VS小公司
  • 原文地址:https://www.cnblogs.com/tis100204/p/10301994.html
Copyright © 2011-2022 走看看