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在面向对象编程中非常重要,他的值取 ...
随机推荐
- 现在有没有一种富文本编辑器能够直接从 word 中复制粘贴公式的?
tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. http ...
- CF796D Police Stations BFS+染色
题意:给定一棵树,树上有一些点是警察局,要求所有点到最近的警察局的距离不大于 $d$,求最多能删几条边 ? 题解: 考虑什么时候一条边可以被断开:这条边的两个端点被两个不同的警察局覆盖掉. 我们要设计 ...
- adb命令积累
1. 模拟事件全部是通过input命令来实现的,首先看一下input命令的使用: (原文:http://blog.csdn.net/huiguixian/article/details/1192538 ...
- RNN(一)——RNN和LSTM原理
背景 神经网络,卷积神经网络等其他深度学习算法,都有个局限性,各个输入在算法内部是相对独立的.比如:'星际争霸有意思,我爱玩'这句话,是有上下文关系的. 如果放在其他网络里面,各个分词将会独立处理.但 ...
- C语言学习笔记8-函数
C语言学习笔记8-函数 ...待编辑 1.汇编看函数调用过程 2.函数调用过程图示:学好C这个是关键,要懂得原理 标准调用(_cdecl) 参数由右往左入栈,调用者平衡栈(即入多少参数后参数调用玩后 ...
- 1632:【 例 2】[NOIP2012]同余方程
#include<bits/stdc++.h> #define ll long long using namespace std; void Exgcd(ll a,ll b,ll & ...
- springboot 出现 org.hibernate.LazyInitializationException: could not initialize proxy
org.hibernate.LazyInitializationException: could not initialize proxy [com.example.shop.dataobject.U ...
- ROS机器人开发实践学习笔记1
刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young to si ...
- Pwnhub Fantastic Key-一点总结
index.php <? php error_reporting(0); include 'config.php'; $id = $_POST['i'] ? waf($_POST['i']) : ...
- 阿里前端实习生面试总结(两轮技术面+一轮hr面)
投的蚂蚁金服: 一面(只有13分钟): 1.angular里双向绑定的实现原理: 巴拉巴拉巴拉,这个问题很常见,我提到了$scope.$apply()和$scope.$digest(),面试官问app ...