JS高程3.基本概念(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); //2
5  howManyArgw();     //0
6  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中的所有参数传递都是值,不可能通过引用传递参数。

  

时间: 2024-10-19 00:27:35

JS高程3.基本概念(6)函数的相关文章

JS高程3.基本概念(2)

1.ECMAScript数据类型 5种简单数据类型,分别是: Undefined Null Boolean Number String 1种复杂数据类型: Object (1)typeof操作符--检测给定变量的数据类型 "undefined"--未定义 "booleam"--布尔值 "string"--字符串 "number"--数值 "object"--对象或是null "function&q

JS高程3.基本概念(1)

1.语法 (1)ECMAScript中的一切(变量,函数名和操作符)都是区分大小写的. (2)标识符 标识符的第一个字符必须是字母,下划线或是美元符号. 其他字符可以是字母,下划线,美元符号和数字. ECMAScript标识符采用驼峰大小写的格式. (3)严格模式(strict mode) 严格模式是为了Javascript定义了一种不同的解析与执行模型.在严格模式下,ECMAScript3中的一些不确定的行为将得到处理,而且对某些不安全的 操作也会抛出错误. 要在整个脚本中启用严格模式,可以在

JS高程3.基本概念(4)操作符

ECMA-262用于操作数据值的操作符包括: 算术操作符 位操作符 关系操作符 相等操作符 ECMAScript操作符的不同之处在于:它能够适用于很多值,包括字符串,数字值,布尔值,甚至是对象.(在应用于对象时,相应的操作符通常会调用对象的valueOf()和(或)toString()方法,以便取得可以操作的值.) 1.一元操作符 (1)递增和递减操作符 需要注意的是: eg: 前置++age:变量的值在语句被求值之前改变. 后置age++:变量的值在语句被求值之后改变. 执行前置递增和递减操作

JS高程3.基本概念(5)语句

1.if语句 2.do-while语句:后测循环语句,循环体内的代码至少执行一次. 3.while语句:前测循环语句. 4.for语句:前测循环语句. 注意:在ECMAScript中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到. eg: 1 var count=10; 2 for(var i=0;i<count;i++){ 3 alert(i); 4 } 5 alert(i); 以上代码的执行效果是,弹出从0到9的警告框,这是for语句循环的结果,最后弹出显示10的警告框,这是f

js基础--javascript基础概念之语法

掌握一门语言 必须先掌握它的语法! javascript 的语法和C.Java.Perl 的语法有些相似.但是比它们更加宽松. javascript 中的一切都是严格区分大小写的.例如变量: demo 和 Demo 两个变量是完全不同的. javascript 标示符,所谓标示符 是指 变量.函数.属性 的名字或函数的参数.标示符的格式是按照以下规则组合的一个或多个字符. 1.第一个字符必须是字母,下划线,或 $ 符号. 2.其他字符可以是字母.下划线.$ . 或数字. 注意 不能把关键字 保留

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

js基础--javascript基础概念之语句(二)

js基础--javascript基础概念之语句(二)label,break,continue.. break .  continue 语句. break  continue 语句用于在循环中精确控制代码的执行,其中break语句会立即退出循环,执行循环后面的语句. continue 则退出循环后返回到再次进入循环中. 如: var num = 0; for(var i = 0; i<=100; i++){ if(i >= 10){ break; } num = i; } alert(num);

javascript (js)中的基本概念

1. 基本数据类型 1.1 number (数字)在js中没有整形和浮点型的区分,所有的数字都是浮点型标识, 采用64位的浮点格式来表示数字.如果数字类型用在字符串连接表达式中,则会自动转换成字符串, 在JS中表示16进制通过在数字前加"0x"或"0X"(零). 1.2 string (字符串)字符串类型是实用单引号('')或双引号("")括起来的unicode字符序列, 一些特殊的字符可以通过转义符来标识.如果字符串用在数字表达式环境中,字符串

js基础--javascript基础概念之变量与作用域

js基础--javascript基础概念之变量.作用域 javascript按照ECMA-262 的定义,变量与其他语言变量有所不同.js变量时松散的,不需要事先定义变量类型的.这使得他只是一个保存特定值的一个名称.变量与其数据类型可以在脚本的生命周期内改变. 还有明白几点: JavaScript的变量作用域是基于其特有的作用域链的,JavaScript没有块级作用域. 基本类型和引用类型的值 ECMAScript 的变量有两种不同的数据类型:分别是 基本数据类型值 和 引用类型值 : 基本数据