PineApple_Ninja.js

PineApple_Ninja.js
1.本章内容
2.理解函数的重要性
3.定义函数的方式
4.参数赋值
Ninja.js

JavaScript中最关键的函数是:第一类对象(first-class objects)
函数与对象共同存在,函数也可以被视为其他任意类型的JS对象。
函数和普通数据类型一样,能被变量引用,能以字面形式声明。
甚至还可以写箭头(arrow)函数,它能帮你编写更优美的代码。
先让我们来学习一下他的优点吧!
首先要带着几个问题来学习
1.回调函数在哪种清下会同步调用,或者异步调用呢?
2.箭头函数和函数表达式的区别是什么?
3.你为什么需要在函数中使用默认参数?

**

函数的不同点到底是什么?

**
函数以及函数式概念之所以重要,原因在于函数是程序执行过程中的主要模块单元。
除了全局javascript代码是在页面构建的阶段执行的,我们编写的所有的脚本代码都将在一个函数内执行。

由于我们的大多数代码会作为函数调用来执行,因此我们在编写代码时,通过用强大的构造器能赋予代码很大的灵活性和控制力。接下来看几张常用功能
下面展示一些 内联代码片

// 对象可以通过字面量来创建{}
//对象可以赋值给变量、数组项,或其他对象的属性。
var ninja={};         //为变量赋值一个新对象
ninjaArray.push({});  //向数组中添加一个新对象
ninja.data={}         //给某个对象的属性赋值为一个新对象
// 对象可以作为参数传递给函数
function hide(ninja){
 ninja.visibility=false;  //一个新创建的对象作为参数传递给函数
}
// 对象可以作为函数的返回值
function returnNewNinja(){
 return {}    			 //从函数中返回了一个新对象
}
// 对象能够具有动态创建和分配的属性
var ninja={};
ninja.name="PineApple";  //为对象分配一个新属性

JS不同于很多其他编程语言,在JS中,我们几乎能够用函数来实现同样的事。
**

函数是第一类对象

**
JS中函数拥有对象的所有能力,也因此函数可被称作为任意其他类型对象来对待。当我们说函数是第一类对象的时候,就是说函数也能实现以下功能。

// 通过字面量创建
function ninjaFunction() {}
// 赋值给变量,数组或其它地下的属性
var ninjaFunction=function(){}; //为变量赋值一个新函数
ninjaArray.push(function(){});  //想数组中添加一个新函数
ninja.data=function(){};		//给某个对象的属性赋值为一个新函数
// 作为函数的参数来传递
function call(ninjaFunction)
{
	ninjaFunction();
}
call (function(){});     		//一个新函数作为参数传递给函数
// 作为函数的返回值
function 
returnNewNinjaFunction(){
 return function(){};       	//返回一个新函数
 }
//具有动态创建和分配的属性
var ninjaFunction=function(){};
ninjaFunction.ninja="PineApple";  //为函数增加一个属性

对象能做的任何一件事,函数也都能做。函数是对象,唯一的特殊之处在于它是可以调用的(invokable),既然函数会被调用以便执行某项动作。
第一类对象的特点之一是,它能作为参数传入函数。对于函数而言,这项特性表明:如果我们将某个函数作为参数传入另一个函数,传入函数会在应用程序执行的未来某个时间点才执行。大家所知道的更一般的概念是回调函数(callback function )接下来深入学习重要概念

// JavaScript中的函数编程
/**
	把函数作为第一类对象是函数式编程(functional programming)的第一步,函数式编程是一种编程风格。
	它通过书写函数式(而不是指定一系列执行步骤,就像那种更主流的命令式编程)代码来解决问题。
	函数式编程可以让代码更容易测试,扩展及模块化。
	但这是一个很大的话题,会牵扯很多知识。
	如果你对函数式编程很有兴趣
	推荐月入Luis Atencion的书去 
**/

**

回调函数

**
当我们建立了一个将在随后调用的函数时,无论是在事件处理阶段通过浏览器还是通过其他代码,我们都是在建立一个回调(callback).这个属于源自于这样一个事实,既在执行过程中,我们建立的函数会被其他函数在稍后的某个合适事件点“再回来调用”
有效运用JS的关键在于回调函数
不论是 单击一次按钮 ,从服务端接受数据,还是UI动画一部分
此段章将讲述实际使用回调函数的典型例子。这部分会有些复杂,所以在深入前要先了解它的概念。我们务必要理解透彻,才能像忍者一样快速手里剑,精通各种暗杀武器
那么回调函数,就是我们的手里剑!也是忍者的入门练习武器之一

function
useless(ninjaCallback){
 return ninjaCallback();
}

这个函数可能看起来没什么用,但他反应了函数的一种能力,即将函数作为另一个函数的参数,随后通过参数来调用该函数.

var text="手里剑";
report("风遁——巨魔手里剑!");
function useless(ninjaCallback){
 report("水遁——水分身手里剑!");
 return ninjaCallback();		 	//函数定义,参数为一个回调函数,其函数体内会立即调用该回调函数
}
function getText(){
 report("雷遁——千鸟手里剑!");
 return text;			//简单的函数定义,仅返回一个全局变量
}
  report("通灵术");
  assert(useless(getText)===text),"反向通灵术"+text)' //把getText作为回调函数传入上面的useless函数
  report("倍攻倍化术");

在这个代码清单中,我们使用自定义函数report()来输出执行过程中的信息,这样一来我们就能通过这些信息来跟踪程序的执行过程。
还使用了 断言函数assert。 该函数通常使用两个参数。第一个参数是用于断言的表达式。
我们需要确定使用参数getText调用useless(getText)===text 判断是否相等
若第一个参数的执行结果为true 断言通过;反之,断言失败。
第二个参数是断言相关联的信息。通常输出在log上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值