(三)基本概念之理解函数

本章内容

  • 语法
  • 数据类型
  • 流控制语句
  • 理解函数

关键词:arguments 重载

一、语法

严格模式

严格模式是为JavaScript定义了一种不同的解析与执行模型。在严格模式下,ECMAScript3中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。要在整个脚本中启用严格模式,可在顶部添加如下代码(编译指示):

‘use strict‘;

在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行:

function doSomething(){
    ‘use strict‘;
    //函数体
}

四、理解函数

理解参数

ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。即便你定义的函数只接收两个参数,在调用时也可以传一个、三个甚至不传,解析器永远不会有什么怨言,因为ECMAScript中的参数在内部是用一个数组来表示的,函数接受的始终是这个数组,而不关心这个数组中包含哪些参数(如果有参数的话)。其特点之一就是:命名的参数只提供便利,但不是必需的。

实际上,在函数体内可通过arguments对象来访问这个数组。它与数组类似(但不是Array的实例),因为可以使用方括号语法访问每一个元素,使用length属性来确定参数数量。且它的值永远与对应命名参数的值保持同步。没有传递值的命名参数将自动被赋予undefined值

function doAdd(num1,num2){
    arguments[1] = 10;   //num2同步修改
    alert(arguments[0] + num2);
}

没有重载

如下代码后定义的函数会覆盖先定义的函数。详细理解可见第四章Function部分

function addSomeNumber(num){
    return num + 100;
}

function addSomeNumber(num1,num2){
    return num1 + num2;
}

如果要模仿方法的重载,可检查传入函数中的参数的类型和数量并作出不同的反应。

function addSomeNumber(){
    if(arguments.length === 2){
        //...
    }else if(arguments.length === 3){
        //...
    }
}

原文地址:https://www.cnblogs.com/L-xmin/p/12588787.html

时间: 2024-10-16 22:59:51

(三)基本概念之理解函数的相关文章

C++--模板的概念和意义、深入理解函数模板、类模板的概念和意义

一.模板的概念与意义 Q:C++中有几种交换变量的方法?定义宏代码与定义函数A.定义宏代码优点:代码复用,适合所有的类型缺点:编译器不知道宏的存在,缺少类型检查B.定义函数优点:真正的函数调用,编译器对类型进行检查缺点:根据类型重复定义函数,无法代码复用 C.泛型编程--不考虑具体数据类型的编程方式Swap泛型写法中的T不是一个具体的数据类型,而是泛指任意的数据类型C++中的泛型编程函数模板--一种特殊的函数可用不同类型进行调用,看起来和普通函数很相似,区别是类型可被参数化函数模板的语法规则1.

JAVA中用堆和栈的概念来理解equals() "=="和hashcode()

在学习java基本数据类型和复杂数据类型的时候,特别是equals()"=="和hashcode()部分时,不是很懂,也停留了很长时间,最后终于有点眉目了. 要理解equals()"=="和hashcode(),最好先了解Java内存中堆和栈的知识: 下面一段是参考自http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html 大家也可点进去查看更详细的解释. Java 中的堆和栈  Java把内存划分成两种

C语言(四)指针概念的理解

转载请标明出处: http://blog.csdn.net/u011974987/article/details/52270018: 前言 最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我抽空把目前的进度给追上来,不然会越落越多.加油吧~(感觉身体都要被掏空了) 指针 我们通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的.所以,学习指针是很有必要的. 正如您所知道的,每一个变量都有一个内存位

C++ 理解函数对象与lambda表达式

参考<21天学通C++>第21与第22章节,对函数对象进行介绍,同时通过lambda表达式这一匿名函数对象的简洁方式加深对函数对象的理解.本篇博文的主要内容是: (1) 函数对象的概念: (2) 将函数对象用作谓词: (3) 如何使用函数对象实现一元.二元谓词: (4) 如何编写lambda表达式: (5) 如何将lambda表达式用作谓词: (6) 如何编写可存储和可操作状态的lambda表达式. 一. 函数对象 1. 函数对象的概念和种类 函数对象是C++实体,从概念上讲,函数对象是用作函

Java编码浅析(注意区分三个概念)(转)

Java与Unicode: Java的class文件采用utf8的编码方式,JVM运行时采用utf16. Java的字符串是unicode编码的. 总之,Java采用了unicode字符集,使之易于国际化. Java支持哪些字符集: 即Java能识别哪些字符集并对它进行正确地处理? 查看Charset 类,最新的JDK支持160种字符集.可以通过static方法availableCharsets拿到所有Java支持的字符集. Java代码   assertEquals(160, Charset.

关于”机器学习:概念与理解“系列

"机器学习:概念到理解"系列,我本着开放与共享(open and share)的精神撰写,目的是让更多的人了解机器学习的概念,理解其原理,学会应用.现在网上各种技术类文章很多,不乏大牛的精辟见解,但也有很多滥竽充数.误导读者的.这个系列对教课书籍和网络资源进行汇总.理解与整理,力求一击中的,通俗易懂.机器学习很难,是因为她有很扎实的理论基础,复杂的公式推导:机器学习也很简单,是因为对她不甚了解的人也可以轻易使用.我希望好好地梳理一些基础方法模型,输出一些真正有长期参考价值的内容,让更多

机器学习:概念与理解(二):回归、稀疏与正则约束 ridge regression,Lasso

"机器学习:概念与理解"系列,我本着开放与共享(open and share)的精神撰写,目的是让更多的人了解机器学习的概念,理解其原理,学会应用.现在网上各种技术类文章很多,不乏大牛的精辟见解,但也有很多滥竽充数.误导读者的.这个系列对教课书籍和网络资源进行汇总.理解与整理,力求一击中的,通俗易懂.机器学习很难,是因为她有很扎实的理论基础,复杂的公式推导:机器学习也很简单,是因为对她不甚了解的人也可以轻易使用.我希望好好地梳理一些基础方法模型,输出一些真正有长期参考价值的内容,让更多

“封装”概念 的理解(2013-08-27 16:22:16)

在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别: 将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体, 也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员. 将数据与对数据的操作 在一个结构体内实现,使用时仅需要调用接口即可. "封装"概念 的理解(2013-08-27 16:22:16),布布扣,bubuko.com

epoll函数及三种I/O复用函数的对比

epoll函数 #include <sys/epoll.h>int epoll_create(int size)int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)int epoll_wait(int epfd,struct epoll_event * events,int maxevents,int timeout) Linux I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数