js中函数总结(1)
8.1函数定义
js的函数可以嵌套在其他函数的定义中,这样它们就可以访问它们被定义时所处的作用域中的任何变量。意味着js函数构成了一个闭包;
function name(){}
特殊的:函数表达式有时定义之后立即被调用。var tensquared=(function(x){return x*x;}(10));
函数声明语句“被提前”到外部脚本或者外部函数作用域的顶部,即可以在定义之前出现的代码所调用;
而以表达式方式定义的函数必须要将其赋值给一个变量。以表达式方式定义的函数在定义之前无法调用;
若一个函数没有return语句则会返回undefined值
嵌套函数
注意:变量作用域的规则:它们可以访问嵌套他们(或多重嵌套)的函数的参数和变量。
函数的调用:
1作为函数 2作为方法 3作为构造函数 4通过它们的call()和apply()方法间接调用
2方法调用 即一个方法是保存在一个对象的属性里的js函数。
若有一个函数f和一个对象o和一个定义名字为m()的方法:
1使用点进行调用 定义为 o.m=f; 调用为 o.m(); 若有2个参数则为o.m(x,y);
2使用方括号(的属性访问表达式)进行属性访问:o["m"]=(x,y) a[0](z)假设a[0]是一个函数
f().m() //在f()调用结束后继续调用返回值中的方法m();
this指针时面向对象编程范例的核心: this是关键字,不是变量,也不是属性名,js不允许给this赋值
1.this没有作用域的限制,嵌套函数不会从调用它的函数中继承this。
2如果嵌套函数作为方法调用,其this值不是全局对象(非严格模式下)就是undefined(严格模式下)。
3如果嵌套函数作为函数调用,如果想要访问外部函数的this值,需要将外部的this值保存在一个变量里。通常使用self保存this;
举例子:
var o={
m:function () {
var self=this;
alert(this===o); /*true*/
f();
function f() {
alert(this===o); /*false*/
alert(self===o); /*true 外部的this只有放在变量中才可以访问*/
}
}
};
o.m();
8.2.3构造函数的调用:
凡是没有形参的构造函数都可以省略圆括号
var o=new object() ===== var o=new object;
8.2.4间接调用 使用call()和apply()
call()使用它自有的实参列表作为函数的实参,apply()方法则要求以数组的形式传入参数
js中函数总结(1)的更多相关文章
- JS中函数参数和函数返回值的理解
函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...
- 关于js中函数的调用问题
js中函数的调用方法 1.直接调用 函数名(参数): 2.通过指向函数的变量去调用 例如: var myval = 函数名: 此刻 myval是指向函数的一个指针: myval(实际参数):此刻调用的 ...
- js中函数传参的情况
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- JS中函数void()
<a href="javascript:void(0)">hello</a>/* * JS中函数void()的运用大体是这种新式; * void()是运算符 ...
- 对JS中函数的理解
函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...
- js中函数的参数为函数的情况即回调函数
js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数function B() { console.log("函数B")setTimeout( ...
- js中函数的一些理论知识
函数的一些理论知识 1. 函数: 执行一个明确的动作并提供一个返回值的独立代码块.同时函数也是javascript中的一级公民(就是函数和其它变量一样). 2.函数的 ...
- php与js中函数参数的默认值设置
php函数参数默认值设置: <?phpfunction test($val=3){ echo $val."<br/>";}test(11);test();?& ...
- JS中函数声明与函数表达式的不同
Js中的函数声明是指下面的形式: function functionName(){ } 这样的方式来声明一个函数,而函数表达式则是类似表达式那样来声明一个函数,如 var functionName ...
- JS中函数的调用和this的值
调用每一个函数会暂停当前函数的执行,传递控制权和参数给新函数.除了声明时定义的形式参数,每个函数还接收两个附加的参数:this 和 arguments. 参数this在面向对象编程中非常重要,他的值取 ...
随机推荐
- Pollard-Rho 总结
将一个大数\(N\)分解质因子. 试除法,暴力枚举\(1-\sqrt{N}\)的数.时间复杂度:\(O(\sqrt{N})\). 通常,这个复杂度够了,但有时,\(N\leq10^{18}\). 这就 ...
- Domain Socket本地进程间通信
socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络socket也可用于同一台主机的进程间通讯(通过loop ...
- [Luogu] 四子连棋
https://www.luogu.org/problemnew/show/P2346 广搜 #include<iostream> #include<cstring> #inc ...
- Codeforces Round #521 (Div.3)题解
A过水,不讲 题解 CF1077B [Disturbed People] 这题就是个显而易见的贪心可是我考场上差点没想出来 显然把一户被打扰的人家的右边人家的灯关掉肯定比把左边的灯关掉 从左到右扫一遍 ...
- VS2010调试时,对于一些语句不能单步运行也不能对变量添加监视的问题
在以mfc建立的工程中,需要建立一个链表来保存一些数据.但是在创建结构体,以及对其赋值的过程中,发现对结构体变量不能观察,添加到监视器中的变量也出现变量名不存在的错误. 首先,在文件的开始定义一个结构 ...
- 网络流24题 P2766 最长不下降子序列问题
题目描述 «问题描述: 给定正整数序列x1,...,xn . (1)计算其最长不下降子序列的长度s. (2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列. (3)如果允许在取出的序列中多次 ...
- alarm函数
alarm函数 设置定时器(闹钟).在指定seconds后,内核会给当前进程发送14)SIGALRM信号.进程收到该信号,默认动作终止. 每个进程都有且只有唯一个定时器. unsigned int a ...
- Django基础之ModelForm
1. form与model的终极结合 class BookForm(forms.ModelForm): class Meta: model = models.Book fields = "_ ...
- 微信小程序开发-踩坑
异步请求处理 详情描述: 微信小程序的wx.request({})请求时异步处理,以下代码 wx.reuest({ url:"https://XXXA", method:" ...
- radio自带回显和默认选中
<input type="radio" name="state" <c:if test="${empty model.state || m ...