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在面向对象编程中非常重要,他的值取 ...
随机推荐
- 015_linux驱动之_signal
1. 首先看应用程序 1. 首先分析第二点使用函数signal(SIGIO, my_signal_fun);来设置,当驱动程序传递信号给应用程序时候会调用第一点的程序 2. 第三点是设置相关参数 (二 ...
- kafka 介绍与使用
在介绍为什么使用kafka之前,我们有必要来了解一下什么是kafka? 1. 什么是kafka? Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率 ...
- 解决“cv2.error: OpenCV(3.4.2) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:356:...”
主要是图片路径中“文件夹分隔符”使用的错误 将“\”改成“/”就好了 修改后的测试代码如下:x.py #导入cv模块 import cv2 as cv #读取图像,支持 bmp.jpg.png.tif ...
- Liunx之django项目部署
一.python web 项目部署 python django默认启动python3 manage.py runserver 0.0.0.0:8000这种方式调用wsgiref单机模块,性能较低,生产 ...
- UVALive 3716 DNA Regions ——(式子变形)
一开始直接想到了二分,写了一发然后过了全部样例就交了,果断WA.因为这个问题显然是不满足单调性的. 然后想之前刚做的斜率优化DP,但是那个是求斜率最大值,不是求满足斜率大于一定值的最大长度的.也构造不 ...
- Netty实践场景
数据通信 如果需要考虑的是两台机器(甚至多台)怎么使用Netty进行通信.大体上分为三种: 1 第一种:使用长连接通道不断开的形式进行通信.也就是服务端和客户端的通道一直处于开启状态. 如果服务器性能 ...
- PG数据库创建并执行存储过程批量插入数据
记录一下PG数据库创建并执行存储过程批量插入数据的SQL: create or replace function addId() returns boolean AS $BODY$ declare i ...
- ELK日志解决方案
1.方案整体设计 FileBeats+Logstash+ElasticSearch+Kibana 1)ElasticSearch 简称ES,用来做日志数据的存储,当然也可以存储其他数据, ES是互联网 ...
- Netty解码器相关文章
最通用TCP黏包解决方案:LengthFieldBasedFrameDecoder和LengthFieldPrepender https://blog.csdn.net/u010853261/arti ...
- leetcode 79. Word Search 、212. Word Search II
https://www.cnblogs.com/grandyang/p/4332313.html 在一个矩阵中能不能找到string的一条路径 这个题使用的是dfs.但这个题与number of is ...