今天在写东西的时候,对函数参数的概念有些模糊,查阅相关资料后,在博客上记点笔记,方便日后复习。

首先,在js中函数参数并没有强语言中那么要求严格,他不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数。原因是:ECMAScript中的参数在内部都是用一个数组来表示的

函数的显式参数与隐式参数

  • 函数的显式参数是在函数定义时列出的,比如:

function hello(arg1,arg2){

//函数体

}

此时的arg1,arg2就是函数的显式参数

  • 函数的隐式参数在函数调用时传递给函数真正的值

Es6中如果函数在调用时,未提供隐式参数,参数会默认设置为:undefined

参数规则:

其实前面已经谈到了,这里在列出来:

  • js函数定义显式参数时没有进行类型检测
  • js函数对隐式参数没有进行类型检测
  • js函数对隐式参数的个数没有进行检测

闭包:

有权访问另一个函数作用域中的变量的函数,创建闭包的常见方式,是在一个函数内部创建另一个函数,比如:

function makeName() {
var name = "Mozilla"; // name 是一个被 init 创建的局部变量
function displayName() { // displayName() 是内部函数,一个闭包
alert(name); // 使用了父函数中声明的变量
}
displayName();
}
makeName();//Mozilla

上述代码就是在makeName内部创建了一个displayName函数,而displayName可以调用父级函数的参数.

闭包用途:

- 读取函数内部的变量

- 让这些变量始终保存在内存中

注意点:

-在退出函数之前,将不适用的局部变量全部删除,避免内存消耗

-闭包会在父函数外部,改变父函数内部变量的值,把父函数当作对象使用,把闭包当作它的公用方法,把内部变量当作的它私有属性,不要随便改变父函数内部变量的值

两个高程上的例子,理解闭包:

var name = "The Window";
var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
     };
    }
};
alert(object.getNameFunc()()); //The Window
其中object.getNameFunc()本身是来自object对象的方法,其返回值时一个函数
而object.getNameFunc()()就是前者返回的函数,它本身的返回值时this.name

javascript基础:函数参数与闭包问题的更多相关文章

  1. 深入理解javascript函数参数与闭包(一)

    在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...

  2. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

  3. python基础—函数嵌套与闭包

    python基础-函数嵌套与闭包 1.名称空间与作用域 1 名称空间分为: 1 内置名称空间   内置在解释器中的名称 2 全局名称空间   顶头写的名称 3 局部名称空间 2 找一个名称的查找顺序: ...

  4. Python基础-函数参数

    Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...

  5. 【javascript基础】8、闭包

    前言 函数和作用域啥的我们前面已经了解了,现在就要学习闭包了,这是一个挺晦涩的知识点,初学者可能会感觉不好理解,但是高手都不不以为然了,高手就给我提点意见吧,我和新手一起来学习什么是闭包. 例子 先不 ...

  6. JavaScript基础函数和词法分析以及常用的内置对象和使用方法(4)

    day52 参考:https://www.cnblogs.com/liwenzhou/p/8004649.html 函数 函数定义 JavaScript中的函数和Python中的非常类似,只是定义方式 ...

  7. JavaScript的函数和作用域闭包

    1. 函数 1.1 定义函数 function add(x, y){ return x + y; } 上述函数定义如下: 关键字function指出这是一个函数定义: add是函数的名称: (x, y ...

  8. JavaScript基础函数---李老师的

    <!DOCTYPE html><html><head>    <title>demo2html</title>    <meta ch ...

  9. Learn day4 函数参数\变量\闭包\递归

    1.函数描述 # ### 函数 """ (1)函数的定义: 功能 (包裹一部分代码 实现某一个功能 达成某一个目的) (2)函数特点: 可以反复调用,提高代码的复用性,提 ...

随机推荐

  1. 1. apache如何启动

    进入apache安装目录/bin/底下,用命令:./apachectl start 启动

  2. 转载:明明白白VC LIB和DLL的使用

    转载来自:http://dpinglee.blog.163.com/blog/static/1440977532016316813889/ 1.加载lib/头文件 分两种方法: (1)适用于当前项目 ...

  3. MVC基于角色权限控制--用户管理

    用户管理模块包括 新增用户.修改用户.展示用户列表.删除用户.用户角色分配.用户角色删除.用户权限分配 这里只介绍关于权限有关的 用户角色分配.用户角色删除.用户权限分配 新建控制器 UserInfo ...

  4. List去重问题引出来的hashCode和equals方法

    一.List 里面是基本类型的去重问题 import java.util.ArrayList; import java.util.HashSet; import java.util.List; imp ...

  5. native.js 判断是否安装某app

    例:是否安装微信 function isWeixin() { var UIApplication = plus.ios.importClass("UIApplication"); ...

  6. maven创建项目,打包出可执行Jar

    官网参考 http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html 配置多种打包方式 这个例子也不错 https://bl ...

  7. 修改 计算机名后,修改SQLserver 注册服务器对象的名称,及登陆名

    select @@ServerName --查看当前所有数据库服务器名称select * from Sys.SysServers --修改数据库服务器名称sp_dropserver 'old_serv ...

  8. 用waitpid函数回收进程

    waitpid函数:作用同wait,但可指定pid进程清理,可以不阻塞. 原型:pid_t waitpid(pid_t pid, int *status, in options); 返回值:成功时返回 ...

  9. 跨域(一)——CORS机制

    Ajax是严格遵守同源策略的,既不能从另一个域读取数据,也不能发送数据到另一个域.但是,W3C的新标准中CORS(Cross Origin Resource Sharing)推进浏览器支持这样的跨域方 ...

  10. c# GC 新典型

    public class testGC : MonoBehaviour { class XDict<K, V> { public void TryGetValue(K key, V val ...