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关键字解析