JavaScript函数声明调用,以及作用域

JavaScript从基础到高级

函数

函数是用来包装重复使用的代码的模块,在对象里面以及构造函数常用到
一.创建函数
1.函数声明

	function obj(){    //function 函数的声明  obj函数名   ()可以填形参可以不填根据需要
	                   //函数体 ,主要实现的代码
	     return 0       // return 返回值,一个函数可以没有返回值
		}

2.函数表达式

	var fun = function(){    //function 函数的声明  fun函数名   ()可以填形参可以不填根据需要
	                       //函数体 ,主要实现的代码
	     return 0       // return 返回值,一个函数可以没有返回值
		}

函数表达式的好处是会提前函数声明
3.ES6箭头函数表达式

	var fun =()=>{
		}

箭头函数表达式的语法比函数表达式的语法简洁 ,并且没有自己的this,arguments,super和new.target,
这些函数的表达式更适用于本来需要匿名的函数的地方,并且他们不能用作构造函数。
箭头函数没有prototype原型的属性
基本的语法

	(items,value … )=>{  //语句}
	(items,value … )=> function(){
									}  //等价于return 一个函数表达式
	()=>{}                //没有参数的的声明

4.使用Function构造函数

	var fun = new Function('arguments[0]','arguments[1]','arguments[n]','代码段 ;return 返回值')

效率低,必须加引号,return返回值不是必须的,影响性能。
二、调用函数
函数只有在调用时才会执行函数里面的代码,不调用不执行的。

	//1.函数名称()  或 变量名()
	fun()
	//2.通过事件调用
	//obj.事件 = 函数名称 或 变量名 或 整个函数块
	//3.整个函数加小括号,可以避免代码库中的函数有重名问题,且只会在运行时执行一次,一般用作初始化工作
	( function () {alert('ok');} )() ;  
	//4.通过函数的apply或call或bind方法调用
	//all() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。(就是说可以指定谁来调用这个函数,且调用时可以传参)
	fun.call(thisArg, arg1, arg2)
	//thisArg:在 fun 函数运行时指定的 this 值 arg1, arg2, ... :指定的参数列表

三、函数传参
实参和形参一一对应,实参比形参少多余的形参不被赋值,也就是undefined ,如果实参数量大于形参可以考虑arguments对象来做,
arguments类似数组但又不是数组,可以记长arguments.length ,arguments.callee:返回当前函数块(就是函数本身)(匿名函数可以使用该属性实现递归调用)。
也可以将一个函数作为一个值传递,列如

	var fun=function (callback){
			callback()
	}
	function fn(){
			console.log('hello world')
			}
	fun(fn)		

四、作用域
1.全局作用域
声明在任何函数以外的数据,拥有全局作用域。
全局作用域的数据,在这条数据声明之后的任何地方都能访问和修改,且只有在页面关闭后才被删除。
2.局部作用域
函数的作用域就是局部作用域
局部作用域的数据,只能在函数内部进行访问和修改,且在函数运行以后被立即删除
局部作用域的数据:
在函数内部使用var或let声明的变量(函数内未使用var或let声明而直接赋值的变量拥有全局作用域)
函数的参数;
函数内的声明函数和函数表达式
3.作用域链
当我们调用一条数据的时候,会先在本作用域进行查找,如果找不到就向上查找父作用域,如果还是没有找到,就继续向上,一直找到全局作用域,还是找不到就报错。
if语句束缚不住var ,if里面定义var,会被提出声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值