博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS_高程3.基本概念(6)函数
阅读量:4352 次
发布时间:2019-06-07

本文共 2098 字,大约阅读时间需要 6 分钟。

1.ECMAScript中的函数使用function关键字来声明。

eg:

1 function sum (num1,num2){2     alert(num1+num2);3  }4  sum(3,7);

注意:

  在有return语句的函数中,函数会在执行完return语句后停止并立即退出。因此,位于return语句之后的任何代码都永远不会执行。

eg:

1 function sum (num1,num2){2     return num1+num2;3     alert("Hello!");//永远不会执行。4  }5  alert(sum(3,7));

  以上代码执行后,会出现内容为“10”的警告框,但是不会出现内容为“Hello!”的警告框,因为函数内部执行完return语句后就停止结束了,不会执行后面的alert(“Hello!”);语句。

 

2.严格模式下对函数的一些限制

(1)不能把函数命名为evel或是arguments;

(2)不能把参数命名为evel或是arguments;

(3)不能出现两个命名参数同名的情况。

 

3.理解参数

(1)ECMAScript中的参数在内部是用一个数组来表示的,函数接收到的始终是这个数组,ECMAScript函数不介意传递进来的参数个数以及参数的数据类型,从这一点可以看出,ECMAScript函数不能实现传统意义上的重载。

 重载函数的定义:在相同的声明域中的函数名相同的,而参数表不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数。

(2)函数体内可以通过arguments对象访问到参数数组,从而获得传递给函数的每一个参数。

  

1  function sum (){2     return arguments[0]+arguments[1];3  }4  alert(sum(3,6));

 

以上例子说明:

  ECMAScript函数命名的参数只提供便利,但不是必需的。

(3)arguments对象的length属性可以获知有多少个参数传递给了函数。

eg:

1 function howManyArgw(){2     alert(arguments.length);3  }4  howManyArgw("hello",45); //25  howManyArgw();     //06  howManyArgw(12);   //1

出现三个提示框,依次是:

(4)开发人员可以利用这一点让函数接收任意个参数并分别实现适当的功能。

eg:

1  function doAdd(){2         if(arguments.length==1){3             alert(arguments[0]+10);4         }else if(arguments.length==2){5             alert(arguments[0]+arguments[1]);6         }7     }8     doAdd(20);9     doAdd(21,10);

 

(5)arguments对象可以与命名参数一起使用:

eg:

1  function doAdd( num1,num2){2         if(arguments.length==1){3             alert(num1+10);4         }else if(arguments.length==2){5             alert(arguments[0]+num2);6         }7     }8     doAdd(20);9     doAdd(21,10);

(6)arguments的值永远与对应命名参数的值保持同步。

eg:

1  function add(num1,num2){2         arguments[1]=10;  //每次执行add函数都会重写第二个参数,将第二个参数的值改为10.3         alert(arguments[0]+num2);4     }5     add(1,2);//本来的值是1+2=3,因为第二个参数的值被改变1+10=11.

注意:

(1)这并不是说着两个值会访问相同的内存空间,它们的内存空间是独立的,但是它们的值会同步。

(2)没有传递值的命名参数将会自动被赋予undefined值。

eg:

1 function add(num1,num2){2         arguments[1]=10;3         alert(arguments[0]+num2);4     }5     alert(typeof(num2));6     add(1);

依次出现的提示框:

(3)ECMAScript中的所有参数传递都是值,不可能通过引用传递参数。

  

 

转载于:https://www.cnblogs.com/LinSL/p/6159554.html

你可能感兴趣的文章
Qt5.9.1结合REF开发基于chorm的浏览器(二)
查看>>
Codeforces Round #162 (Div. 1) B. Good Sequences (dp+分解素数)
查看>>
Windows PE3.0制作方法(从Win7中提取制作)
查看>>
TileList组件做的一个图片浏览工具
查看>>
Verilog 语言 001 --- 入门级 --- 编写一个半加器电路模块
查看>>
Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件
查看>>
pip升级命令
查看>>
python习题:登录注册小程序
查看>>
js分页页码算法
查看>>
eclipse安装lombok
查看>>
JavaScript 常见正则表达式
查看>>
sqlite3
查看>>
[原创]CSS 去掉点li 的点 使得LI前面的点不在显示
查看>>
Fiddler中无法抓取JS文件
查看>>
AFNetworking速成教程
查看>>
HDU1017 注意下输出格式就可以了,我因此PE了两次啊!伤不起啊!
查看>>
《世界是数字的》读后感
查看>>
poj1637
查看>>
leetcode 34 二分搜索变种
查看>>
Java 学习笔记 (一) If 语句
查看>>