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)的更多相关文章

  1. JS中函数参数和函数返回值的理解

    函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...

  2. 关于js中函数的调用问题

    js中函数的调用方法 1.直接调用 函数名(参数): 2.通过指向函数的变量去调用 例如: var myval = 函数名: 此刻 myval是指向函数的一个指针: myval(实际参数):此刻调用的 ...

  3. js中函数传参的情况

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. JS中函数void()

    <a href="javascript:void(0)">hello</a>/* * JS中函数void()的运用大体是这种新式; * void()是运算符 ...

  5. 对JS中函数的理解

    函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...

  6. js中函数的参数为函数的情况即回调函数

    js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数function B() { console.log("函数B")setTimeout( ...

  7. js中函数的一些理论知识

      函数的一些理论知识 1. 函数:                执行一个明确的动作并提供一个返回值的独立代码块.同时函数也是javascript中的一级公民(就是函数和其它变量一样). 2.函数的 ...

  8. php与js中函数参数的默认值设置

    php函数参数默认值设置: <?phpfunction test($val=3){   echo $val."<br/>";}test(11);test();?& ...

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

    Js中的函数声明是指下面的形式: function functionName(){   } 这样的方式来声明一个函数,而函数表达式则是类似表达式那样来声明一个函数,如 var functionName ...

  10. JS中函数的调用和this的值

    调用每一个函数会暂停当前函数的执行,传递控制权和参数给新函数.除了声明时定义的形式参数,每个函数还接收两个附加的参数:this 和 arguments. 参数this在面向对象编程中非常重要,他的值取 ...

随机推荐

  1. 03_每周 5 使用 tar 命令备份/var/log 下的所有日志文件

    ]# vim /root/logbak.shtar -czf log-`date +%Y%m%d`.tar.gz /var/log ]# crontab -e -u root00 03 * * 5 / ...

  2. 参数类型 (@Controller层)

    @RequestMapping(path = "/listPage")@SuppressWarnings("unchecked")@BussinessLog(v ...

  3. 51nod 1412

    考虑到只与深度和点的个数有关$f[n][d]$ 表示 $n$ 个点,深度为 $d$ 的 $AVL$ 树有多少种 枚举左子树大小为 $i$, 进行转移并且深度为 $logn$ 级别 $f[n][d] = ...

  4. ROS机器人开发实践学习笔记1

    刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young to si ...

  5. linux安装maven简易步骤

    版本要求maven3.6.1 软件下载 wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3 ...

  6. 异步机制 - IO完成端口

    1 KQUEUE KeInitializeQueue VOID KeInitializeQueue( IN PKQUEUE  Queue, IN ULONG  Count  OPTIONAL ); l ...

  7. CISCO实验记录十一:switch端口安全配置

    1.启用交换机端口安全 2.限制端口最大访问量为1,超出后关闭端口 1.启用交换机端口安全 #interface gigabitEthernet 0/1 #switchport mode access ...

  8. git clone速度太慢解决方案

    原文地址:https://blog.csdn.net/hzwwpgmwy/article/details/79043251 适用各种操作系统,本次测试于ubuntu,下载速度从二十几k提高到二百多k ...

  9. Java-ZipUtil

    Zip 压缩工具类,不支持压缩空文件夹. 简单版 import java.io.FileOutputStream; import java.io.IOException; import java.ni ...

  10. 前端知识点回顾——mongodb和mongoose模块

    mongodb和mongoose模块 数据库 数据库有关系型数据库(MySQL)和非关系型数据库(mongodb),两者的语法和数据存储形式不一样. mySQL 关系型数据库 类似于表格的形式,每一条 ...