JavaScript笔记(5)

1.return 跳出当前函数 返回一个结果
<script>
    //return可以跳出当前函数  所以return写在函数的最后一行
    function out() {
            return function (){
                console.log("inner-before")
                return "inner-fn";
                console.log("inner-end")
            };
    }

    var inner = out();
    var str = inner();
    console.log(str); 
</script>

输出:
inner-before
inner-fn
因为inner-end 写在return的后面,所以代码没有被运行,也就没有输出

2.作用域

 在js中作用域一般都是函数作用域
<script>
    
    function test() {
        var a = "a";
        console.log(a);
    }
test(); console.log(a);
输出结果为:a

还报了一个错误:a is not defined
因为a变量的值是定义在局部作用域中的

所以外面的 console.log(a)全局作用域访问不到里面 取不到定义的a变量的值

 3.全局作用域

<script> /*全局作用域*/

   
    function out() {
           
            return function inner(){
                return "inner-fn";
            };
    }

   var inner =  out() ;

</script>                                           
 

 4.函数内部属性 --> this

this指向于谁
        得看函数调用位置上的调用形式
            普通调用        指向  -->                            window
            隐式调用        指向  -->                            调用对象
            显示调用        指向  -->                            指定对象
            构造调用        指向  -->                            构造出来的对象(实例)

this的值必定是引用类型

 5.函数的属性:length

<script>
    function test(a,b,c,d,f,){

    }
console.log(test.length);

</script>
输出结果为:5

length属性表示形参的个数

 6.函数的方法:apply() 和 call()

    function test(flag,flag1) {
        console.log(this,flag,flag1)
    }
    test("普通调用","普通调用2")
    test.call({a:"a"},"call调用","call调用2");         call函数的第二个参数 是当前函数的第一个参数
    test.apply({b:"b"});
 call() apply()调用(显示调用) 相比于 普通调用 可以改变 函数内部的this指向  
 call() 和 apply() 传参方式不一样

 7.new关键字解析

 

猜你喜欢

转载自www.cnblogs.com/fxiong/p/10121800.html
今日推荐