js中函数学习笔记

函数:

具名函数

匿名函数

一.函数定义

(1)函数声明

函数声明只能出现在程序或函数体内,

function  fun(){

//函数体

}

(2)函数表达式

匿名函数表达式

var fun = function(){

//函数体

}

具名函数表达式

var fun = function f(){

//函数体

}

具名函数表达式的函数名只能在创建函数内部使用

(3)函数构造函数

Var fun = new Function(),一般不建议使用

二.函数调用方式:

(1)作为函数被调用,是由于函数后面加上()操作符来触发的,用这种方式调用时,函数的上下文就是全局的上下文,即window对象

(2)方法调用模式:一个函数是一个对象的属性,当这个函数被调用时候,这个函数就视为这个对象的一个方法。当这个函数作为一个对象的方法被调用的时候,这个对象就成为这个函数的上下文。

函数的上下文的产生,并不由函数的定义来决定,而是由函数的调用来决定。

(3)构造函数调用:想让一个函数作为构造器被调用,需要new关键字,this为创建的新对象

关于new的过程

1)创建一个空的对象,仅包含Object的属性和方法。

2)将prototype中的属性和方法创建一份引用,赋值给新对象

3)将this上的属性和方法新建一份,赋值给新对象

4)返回this对象,忽略return 语句。

(4)apply/call调用:通过使用apply和call方法,可以用任何对象作为函数上下文,并将它显性的操作

Apply(),接收两个参数,第一个参数作为函数上下文的对象,第二个参数,一个参数数组

Call(),则是另一个简单的形式,第一个参数作为函数上下文的对象,第二个参数只需要传递参数列表来代替参数数组。

三.函数的属性和方法

Function()的属性:prototype

Function对象实例属性:

(1)arguments:arguments对象是一种类数组对象,它包含所有传递给函数的参数,arguments对象拥有名为callee的属性,这个属性指向的是当前执行的函数,这个属性可以一直用于在函数内部获取到函数自身。arguments对象拥有length属性,它给出的是在调用时发送给函数的参数数量。这个属性已经被js1.4中废除。

(2)constructor

(3)length:而这个函数实例length属性,提供的是已定义参数的数量,它可以获得函数所需要的参数总数量。
        Function对象实例方法:

(1)apply()

(2)call()

(3)toString()

四.匿名函数,自调用的匿名函数表达式,自调用的匿名函数语句

五.函数可以无限地嵌套在其他函数内部

在真正定义函数语句之前,可以在执行时调用该函数语句,因为函数声明提升的作用。使用函数声明语句的话,函数名称和函数体均提前,使用函数定义表达式,js会将此代码拆分两行代码分别执行。先把变量名提升,函数的表达式仍然在原来的位置

时间: 2025-01-02 04:56:32

js中函数学习笔记的相关文章

contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>

说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ------------------------------------------------------------------------------------------------------------------------------------- 根据上一个笔记里面添加的printf()语句的打印信息提示,hello world 打印是在执行了 1 autostart_

C++运算符重载为友元函数学习笔记

初探C++运算符重载学习笔记 在上面那篇博客中,写了将运算符重载为普通函数或类的成员函数这两种情况. 下面的两种情况发生,则我们需要将运算符重载为类的友元函数 <1>成员函数不能满足要求 <2>普通函数又不能访问类的私有成员时 举例说明: class Complex{ double real, imag; public: Complex(double r, double i):real(r), imag(i){ }; Complex operator+(double r); };

对JS中函数的理解

函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能) var fn=function(a){return a+100;} fn=function(a){return a+200;} alert(fn(100)); //300 要访问函数的引用(指针)而不是执行函数时,必须去掉圆括号,加上圆括号表示访问函数执行后的结果 函数体内部的语句在执行时,一旦

js中函数参数值传递和引用传递

js中函数参数值传递和引用传递:在阅读本章节之前建议参阅一下两章节:1.值类型可以参阅javascript的值类型一章节.2.引用类型可以参阅javascript的引用类型一章节.一.函数传递值类型:代码实例如下: function addNum(num) { num+=10; return num; } var num=10; var result=addNum(num); console.log(num); console.log(result); 以上代码的弹出值分别为:10和20,下面进

node.js框架StrongLoop学习笔记(一)

node.js框架StrongLoop学习笔记(一) 本人在用node.js做手机后台,查找框架发现StrongLoop挺适合,可是却发现没有中文教程,于是在自己学习时,做一下笔记,以方便其他像我一样的人参考(本人的英语水平非常差,只能一点点试着做,并记录下来,如果大家发现问题,请通知我好更正,谢谢了!).所有操作都是在CentOS7-x64,Node.js 0.12.2下完成的. nodejs框架StrongLoop学习笔记一 安装StrongLoop 创建项目 安装数据库驱动 配置数据库连接

Android中ActivityManager学习笔记(3)

在之前写过2篇关于ActivityManager的文章,如下所示.都是通过实战去了解里面的信息,现在感觉太繁琐,所以做一个api介绍比较详细.就像之前学习Telephony那样,对整体了解整个ActivityManager很有用. Android中ActivityManager学习笔记(1)-MemoryInfo Android中ActivityManager学习笔记(2)-RunningServiceInfo ActivityManager android.app包,含有6个内部类: Memo

VS2013中Python学习笔记[Django Web的第一个网页]

前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环境的搭建过程,以及Hello World的实现. 第二篇 VS2013中Python学习笔记[基础入门] 我简单学习使用了Python的几个基础的知识点. 第一个Web页面 第一步:首先打开VS2013开发工具 ,新建项目,选择Django Project模版. 修改项目名称,可以查看到项目的文件结

JS中函数声明与函数表达式的不同

Js中的函数声明是指下面的形式: function functionName(){ } 这样的方式来声明一个函数,而函数表达式则是类似表达式那样来声明一个函数,如: var functionName = function(){ } 可能很多朋友在看到这两一种写法时会产生疑惑,这两种写法差不多,在应用中貌似也都是可行的,那他们有什么差别呢? 事实上,js的解析器对函数声明与函数表达式并不是一视同仁地对待的.对于函数声明,js解析器会优先读取,确保在所有代码执行之前声明已经被解析,而函数表达式,如同

JS中函数的地方方式

JS中函数是特殊的对象,可以拥有自己的属性和方法,属性被定义为局部变量,这样可以有效地防止变量的污染,方法被定义为闭包(定义在函数内部的函数).JS中函数的实参和形参个数都可以不固定,通过arguments(实参对象)函数属性来调用,在函数内部arguments.length表示函数实参的个数,而arguments.callee.length表示函数的形参的个数.prototype称为原型属性, 1.通过函数直接量表达式定义(适合于只要使用一次的场景,在JS中使用最多的是回调函数): funct