码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-03-28 20:09:00      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:代码   脚本   ===   使用   类型   asc   ret   可见   命名参数   

本章内容

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

关键词: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){
        //...
    }
}

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

标签:代码   脚本   ===   使用   类型   asc   ret   可见   命名参数   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!