JavaScript(四)-----函数

1.函数定义

在这之前呢,咱先说一个JavaScript和Java不同的地方

那就是JavaScript竟然有一种类型交function,对的。我其实是上一周刚刚才听说函数原来也可以是一种类型,虽然是引用类型,那也足够显示他的特殊。

也就是说它可以赋值,可以做一些Java中没有的操作。甚至在面对对象编程是也是利于函数来操作的。

正常呢函数都是这样的(随便来个例子蛤)

function (a,b)
{
    return '巴拉巴拉'
}

同时,也可以这样,采用变量赋值的方法来声明函数,也可以将函数赋值给别人

var fn = function()
			{
				return 'balabala'
			}

var a1 = fn;
			
a1();

同时,函数中也可以嵌套函数,实现套娃行为

因为这种特性,后面将会有一种交闭包的结构,能够在函数外部访问到出全局变量以外的函数内部变量

			var fn = function()
			{
				var n = 0;
				function fn1()
				{
					console.log(n)
				}
				return fn1();
			}
			//console.log(n)     会报错n is not defined
			fn();   //输出函数内部n的值0

还有一件事,函数不支持重载哦,也就是说同名函数会被覆盖 

2.函数调用

1.至于函数调用的方式,普通的就是fn(),如果组合函数,可以使用return返回值调用。如下

		<script type="text/javascript">
		var fn = function()
		{
			function sum(a,b)
			{
				var sum = a + b;
				console.log(sum)
			}
			return sum;
		}
        //a等于fn函数运行的结果,自然a就是函数sum
		var a = fn();
		a(1,2);   //输出3
		
		</script>

 2.还有就是call和apply的方法

get.apply(xiaoming, [20,10]); 
get.call(xiaoming, 10,20); 
//get是函数名

 3.关于立即调用函数表达式

就是让函数立刻使用一次,就像这样,不需要调用,直接直接运行

            var  result1   =(function(i){
				
				var  value  = i;
				
				return  value;
				
			}(100));
			
			console.log(result1);

 

3.函数作用域

很简单,就是函数内部的变量,外部是不能随便访问的

            var fn = function()
			{
				var n = 0;
				function fn1()
				{
					console.log(n)
				}
				return fn1();
			}
			//console.log(n)     会报错n is not defined

如果想要访问,那就得用闭包咯

4.闭包

闭包就是值在函数作用域范围之外去访问作用域中的变量的值

或者读取其他函数内部的函数,上面已经举过例子了,如果你好好看一遍就知道咯~

同时需要注意的就是关于内存的问题,因为闭包会使变量都保存在内存中,所以除非必要,没必要经常性使用,会导致性能问题。

5.arguments

JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array

利用arguments,你可以获得调用者传入的所有参数。也就是说,即使函数不定义任何参数,还是可以拿到参数的值

function abs() {
    if (arguments.length === 0) {
        return 0;
    }
    var x = arguments[0];
    return x >= 0 ? x : -x;
}

abs(); // 0
abs(10); // 10
abs(-9); // 9

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值