javascript基础:函数参数与闭包问题
今天在写东西的时候,对函数参数的概念有些模糊,查阅相关资料后,在博客上记点笔记,方便日后复习。
首先,在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基础:函数参数与闭包问题的更多相关文章
- 深入理解javascript函数参数与闭包(一)
在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- python基础—函数嵌套与闭包
python基础-函数嵌套与闭包 1.名称空间与作用域 1 名称空间分为: 1 内置名称空间 内置在解释器中的名称 2 全局名称空间 顶头写的名称 3 局部名称空间 2 找一个名称的查找顺序: ...
- Python基础-函数参数
Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...
- 【javascript基础】8、闭包
前言 函数和作用域啥的我们前面已经了解了,现在就要学习闭包了,这是一个挺晦涩的知识点,初学者可能会感觉不好理解,但是高手都不不以为然了,高手就给我提点意见吧,我和新手一起来学习什么是闭包. 例子 先不 ...
- JavaScript基础函数和词法分析以及常用的内置对象和使用方法(4)
day52 参考:https://www.cnblogs.com/liwenzhou/p/8004649.html 函数 函数定义 JavaScript中的函数和Python中的非常类似,只是定义方式 ...
- JavaScript的函数和作用域闭包
1. 函数 1.1 定义函数 function add(x, y){ return x + y; } 上述函数定义如下: 关键字function指出这是一个函数定义: add是函数的名称: (x, y ...
- JavaScript基础函数---李老师的
<!DOCTYPE html><html><head> <title>demo2html</title> <meta ch ...
- Learn day4 函数参数\变量\闭包\递归
1.函数描述 # ### 函数 """ (1)函数的定义: 功能 (包裹一部分代码 实现某一个功能 达成某一个目的) (2)函数特点: 可以反复调用,提高代码的复用性,提 ...
随机推荐
- 从一个异常探索spring autowired 的原理
从一个异常探索autowired 的原理. 首先环境是这样的: public class Boss { @Autowired private Car car; } //@Component 加上这个注 ...
- 1. SpringBoot启动后,报异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
出现这个异常说明了跳转页面的url无对应的值. 原因1: Application启动类的位置不对.要将Application类放在最外侧,即包含所有子包 原因:spring-boot会自动加载启动类所 ...
- JSP创建用户验证的实例
1 显示中文的代码编码解决办法: <%@ page language="java" import="java.util.*" pageEncoding=& ...
- 转载:approxPolyDP函数
本文转载http://blog.csdn.net/qq_18343569/article/details/47999257 1.approxPolyDP函数 函数的作用: 对图像轮廓点进行多边形拟合 ...
- PropertiesUtils
package com.icil.elsa.subscribe.milestone.common.utils; import java.io.BufferedInputStream; import j ...
- Shell 编程(实例二)
创建一个脚本,为指定硬盘创建分区 1.列出当前系统所有磁盘,让用户选择,如果选择quit则退出脚本:如果选择错误,则重新选择 2.当用户选择完成后,询问是否继续 3.抹除选择磁盘上的分区,为其创建三个 ...
- png 2 icon
http://www.easyicon.net/covert/ 这个网页可以转换png图片为icon格式
- 使用spring validation完成数据后端校验
前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验.但是为了避免用户绕过浏览器,使用http工具直接向后端请求 ...
- The Google File System——论文详解(转)
“Google文件存储系统(GFS)是构建在廉价服务器之上的大型分布式系统.它将服务器故障视为正常现象,通过软件方式自动容错,在保证系统可用性和可靠性同时,大大降低系统成本. GFS是Google整个 ...
- java程序发布成exe等
1.使用工具jartoexe http://www.regexlab.com/zh/jar2exe/free.htm http://www.jar2exe.com/ 2.exe4j.JSmooth等 ...