初学JavaScript之——函数和闭包笔记

现在这里声明一下,这里涉及到的内容只是ES6的学习笔记,一些看法想法,只是自己初学时的想法,如有错误或者不太合理的地方,希望大神多多指教.

Function类型
在JS中函数都是Function类型的实例,和其他引用类型一样具有属性和方法。函数名在我的理解实际上就是指向函数对象的指针。

// 在练习前,我先添加一个函数,方便之后的打印
Object.prototype.description = function()
{
	console.log(this);
}

1.函数的声明
JS的变量声明具有hoisting机制,JS引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面。

// 说明了hoisting机制
sayHello();
// 函数的声明
function sayHello()
{
	"Hello world!".description();
}

2.函数表达式

// 我的理解是 定义一个sayHello变量并用一个匿名函数初始化它。
var sayHello = function()
{
	"Hello world!".description();
}

3.构造函数

var sum = new Function("numb1","numb2","return numb1 + numb2;");
sum(1,2).description();// 打印 [Number: 3]

4.函数立即执行

//函数立即执行的两种方法
(function(){"Hello, everybody!".description();})();
(function(){"Hello, everybody!".description();}());

5.关于函数的返回值

function func1(){

}

function func2(){
	return 10;
}

(typeof func1()).description(); //[String: 'undefined']
(typeof func2()).description(); //[String: 'number']

接下来我们通过一些例子来熟悉一下闭包

// 闭包的第一种写法
function Circle1(r){
	this.r = r;
}
Circle1.PI = 3.1415926
Circle1.prototype.area = function()
{
	return Circle1.PI * this.r * this.r;
}

var c = new Circle1(10);
c.area().description();  //[Number: 314.15926]

// 写法二
var Circle2 = function()
{
	var obj = new Object();
	obj.PI = 3.1415926;
	obj.area = function(r)
	{
	    return this.PI * r * r;
    }
return obj;
}

var c2 = new Circle2();
c2.area(10).description();//[Number: 314.15926]


// 写法三
var Circle3 = new Object();
Circle3.PI = 3.1415926;
Circle3.Area = function(r){
	 return this.PI * r * r;
}

Circle3.Area(10).description();//[Number: 314.15926]


// 第四种写法
var Circle4 = {
	PI:3.1415926,
	area:function(r){
		return this.PI * r * r;
	}
}
Circle4.area(10).description();//[Number: 314.15926]


// 第五种写法(这种方式不是很懂)
var Circle5 = new Function("this.PI = 3.1415926;this.area = function(r){return this.PI * r * r;}");
var c5 = new Circle5();
c5.area(10).description();//[Number: 314.15926]

一般常用 应该是二、四

简单介绍一下这个关键字 arguments

function doAdd()
{
	if (arguments.length == 0) 
	{
		return doAdd(0,0);
	}else if(arguments.length == 1){	
		return doAdd(arguments[0],0);
	}else{
		return arguments[0] + arguments[1];
	}
}

doAdd().description();
doAdd(1).description();
doAdd(1,2).description();
doAdd(1,2,3).description();
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;、本 3项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReadmE.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、资 1源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READMe.m文件(如d有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值