js复习5-函数2

  1. 作用域

概念:变量或函数使用的范围

作用域的划分:js中作用域可以分为全局作用域和局部作用域

  • 全局作用域:script标签以内,函数体以外

  • 局部作用域:函数执行形成局部作用域 (函数体以内)

作用域特点

  • 全局作用域特点:在全局下定义的变量或函数,称之为全局变量或全局函数,可以在任意地方(全局或局部)访问或修改

  • 局部作用域特点:在局部作用域下定义的变量或函数,称之为局部变量或局部函数,只能在当前作用域下访问或修改

            // a,b变量称之为全局变量
            var a = 10;
            var b = 20;

            console.log(a, b); //10 20

            // fn全局函数
            function fn() {
                var c = 1000; //局部变量
                console.log(a, b, c);

                function fn1() { //局部函数
                    console.log("哈哈");
                }

                fn1();
            }


            fn();

            // console.log(c);  //ReferenceError: c is not defined

            // fn1(); //ReferenceError: fn1 is not defined    



            // 全局函数
            function test() {
                console.log(a, b);
                // console.log(c); //ReferenceError: c is not defined

                fn();
                // fn1();//ReferenceError: fn1 is not defined
            }

            test();
  1. 预解析(变量提升)

js中预解析可以分为全局下的预解析和局部下的预解析,预解析就是将所有带有var和function的关键字进行提前的加载,预解析可以分为两部分 声明 和 定义,var是只声明不定义,function是声明+定义

  • 声明:var a;

  • 定义:a= 10; (赋值)

函数执行形成局部作用域,实际上是提供了代码执行的环境,是一个栈区。

  1. 作用域链

概念:首先作用域链是一种查找机制,在当前作用域下,用到某个变量或函数,有私有的先用私有的,私有的没有会往上一级作用域进行查找,上一级作用域没有就再往上一级作用域进行查找,直到找到全局作用域为止,找不到就报错了。 (上一级作用域:就看当前这个函数在哪里预解析的 / 在哪里调用的)

函数执行完毕会自动销毁(垃圾回收机制)

  1. 函数返回值

在函数外界想要得的函数内部的数据,需要返回给外界,这个返还给外界的值,就称为函数返回值

特点:
  • 当函数没有返回值时,默认为undefined;

  • return本质是退出当前函数,函数中一旦遇到return,这个函数到这里就结束了,return后面代码就不执行了,我们返回值必须在函数体末尾;

  • 默认我们只能返回单个值,返回多个值我们一般会返回一个数组;

  • 返回值得数据类型:可以是任意数据类型

  1. 获取经过浏览器渲染的样式

浏览器渲染的样式:包含了行内样式,内部样式,外部样式

获取:

getComputedStyle(元素).样式属性 或 getComputedStyle(元素)['样式属性'];

注:getComputedStyle在IE8及以下不兼容,IE下提供了独有的获取经过浏览器渲染样式的方式

IE:

元素.currentStyle.样式属性 或 元素.currentStyle['样式属性'];

浏览器渲染兼容处理
/* 
        作用:获取经过浏览器渲染的样式值
        参数:
            ele:元素  
            attr:样式属性  (字符串)
        返回值:返回当前属性具体的样式值
*/

function getStyle(ele, attr) {
    // 判断
    if (ele.currentStyle) { //IE下
        // 一旦涉及变量用中括号语法
        return ele.currentStyle[attr];
    } else { //IE以外其它浏览器
        return getComputedStyle(ele)[attr];
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值