return
return的作用:
--返回函数的返回值
--跳出当前函数,return后的代码不再被执行(作用域)
<script>
function counter(){
for(var i=0;;i++){
console.log(i+"A");
if(i===5){
return; //return跳出当前函数,当前函数return后的语句不再执行
}
console.log(i+"B");
}
//先执行完for循环才执行后面的语句
console.log(i+"C");
}
counter()
</script>
<script>
function test(){
return function inner(){
console.log("A");
return "A+B";
return("B");
}
}
// console.log(test()());
var out = test() //调用test函数,返回值为inner函数,把inner函数的地址值给out变量
var str = out() //out调用inner函数,并将其返回值给str变量
console.log(str);
</script>
作用域
<script>
//a为全局变量,可以在任意地方使用
var a=100;
function test(){
var a=20; //a为局部变量,只能在当前函数中使用
console.log(a);
x=50; //x为全局变量,可以在任何地方使用,但函数被调用时才会被使用,否则,不能被使用
}
test()
console.log(a)
</script>
函数内部属性this
this指向:
普通调用=函数名()--->this指向window
构造调用=new 构造函数名()--->this指向构造出的实例对象
显示调用=函数名.call(thisArg,参数列表)--->this指向指定的对象
显示调用=函数名.apply(thisArg,数组元素参数列表)--->this指向指定的this值
隐式调用=对象.属性名--->this指向调用的对象
--
函数内部属性arguments
arguments的作用:保存函数的实参。
function demo(){
console.log(demo.arguments); //arguments的作用:保存实参
}
demo(1,2,3)
</script>
--
arguments的callee属性
指向拥有 arguments 对象的函数的指针。
callee的作用:为了消除与函数名的紧密耦合性。
//实现5!
<script>
function computed(num){
if(num<=1){
return 1;
}else{
//return num*computed(num-1);等价于下面的这条语句
return num*arguments.callee(num-1); //递归调用
}
}
var res = computed(5)
console.log(res);
</script>
函数属性
length--->函数接收参数的个数。
prototype--->函数的原型
<script>
function demo(a,b,c){
}
demo()
console.log(demo.length); //demo()函数有3个参数
</script>
函数方法
在函数调用时,可以使用call或apply方法改变this的指向。
call与apply的区别:传参不同。
call(thisAry,参数列表)
apply(thisAry,数组元素参数列表)
<script>
function demo(f1,f2){
var f3 = f1+f2;
console.log(this,f3);
}
var a = demo.call({a:"a"},1,2)
var b = demo.apply({b:"b"},[2,3])
</script>
网友评论