js学习——函数
2021-07-11 04:03
标签:div 检测 隐式 app ++ bsp 结果 作用 sel 函数声明 函数表达式,并把函数存储在变量x中 用函数构造函数定义一个函数(参数, 表达式) 函数提升:声明会自动提前,赋值的不提升 函数自动调用自己执行 函数是对象 显式参数:形参(C++) 隐式参数:实参(C++) 参数规则:对隐式参数不进行类型检测,也不进行个数检测 默认参数:如果没有给隐式参数,那么显式参数的值为undefined arguments对象:function的内置属性 参数传递:按值传递(C++) 参数传递:按引用传递(C++) 函数调用,有4种调用方式,区别在于this的初始化 this指向调用函数的对象 js闭包(python中也类似) 可访问上一层函数作用域里变量的函数 js学习——函数 标签:div 检测 隐式 app ++ bsp 结果 作用 sel 原文地址:http://www.cnblogs.com/coolqiyu/p/7087917.htmlfunction funName(parameter){}
//不用给函数名,后续并不能直接用给定的函数名调用
var x = function(a){return a};
x;//返回的是一个函数对象
x();//调用函数
var myFunc = new Function("a", "b", "return a + b");
myFunc(10);
function myFunc(x){return x;}
(function callSelf(){alert("i call myself");})();
function myFunc(){};typeof myFunc;//类型为 function
function myFunc(x)
{
x = x||0;//若x是undefined,则将其值设为0
}
function myFunc()
{
var n = arguments.length;//参数的个数
//遍历输出每一个参数
for(var i = 0; i )
{
alert(arguments[i]);
}
}
//不是对象的是按值传递
var a = 0;
function ma(a){a = 4;}
ma(a);//结果没有变化
//隐式参数是按值传递
var c = [1,2,3];
function mc(){arguments[0] = 3;}
mc(c);//c的值没有变化
var b = [1,2,3];
//显示参数,且参数是一个对象
function mb(b){b[0]=3;};
mb(b);//b的值发生变化
//作为一个函数调用
function myFunc()
{
return this;
}
//返回window对象,因为默认属于window全局对象
myFunc();
//作为对象的方法调用
var myObj={
myFunc:function(){return this;}
};
myObj.myFunc();//返回myObj对象:Object {myFun: function}
//用构造函数调用函数,构造函数中的this没有任何值
function myFunction(){return this;}
//this指向实例化后的对象:myFunction{}
var myFunc = new myFunction();
//作为函数方法调用函数
function myFunction(a,b,c){return this;}
//第一个参数myObj会成为this
var a = 0, b = 0, c = 0;
myObj = myFunction.call(myObj, a, b, c);//按参数一个个对应给出
var arr = [0, 0, 0];
myObj = myFunction.apply(myObj, arr);//参数组合成一个数组
var add = (function() {
var counter = 0;
return function() { return counter += 1; };
})();//自调用函数
add();
add();//计数器会递增
var x = function(){return function(){alert("abc");};};
x; //function(){return function(){alert("abc");};};
x(); //function (){alert("abc");}
x()();//会执行alert("abc")
上一篇:C 语言中函数的跳转