JavaScript基本语法及参数问题(1)
2018-03-29 19:34
190 查看
基本语法:
function name(arg0,arg1,arg2){ statements} (注意没有;)
如
function sayHi(name,mes) {
console.log("hello "+name+","+mes );
}
// 调用函数,形参变为实参
sayHi("solin","you are a superhero");
函数在定义时候,不必指定是否含有返回值,实际上在ECMAScript中任何函数在任何时候都可以通过return语句来实现返回值;
function sum(num1,num2) {
return num1+num2;
}
console.log(sum(2,3));输出为:5;
注意!位于return之后的代码永远不会执行!
所以希望某些代码不执行的时候,可以直接在前加return;及之后的代码永远不会执行.
推荐让函数永远有返回值或者永远没有,方便进行调试.
---------
关于参数
!ES中不介意传递多少个参数,也不介意参数的数据类型,理由是ES中内部参数是用数组表示的,直接可以通过arguments[]来进行访问参数.
重写第一段代码,输出结果也是一样的
function sayHi() {
console.log("hello "+arguments[0]+","+arguments[1]);
}
// 调用函数,形参变为实参
sayHi("solin","you are a superhero");
name,mes称之为标识符.
可以通过arguments.length来获取参数个数;
{console.log(arguments.length)};
();=>0 (12)=>1 ("string",1)=>2
当然参数对象和命名对象在es中也是不冲突的.
再看下面的代码
function doAdd(num1,num2) {
arguments[1]=10;
console.log(arguments[0]+num2);
}
doAdd(10,5);输出结构为20,即会重写num2的值, 因为arguments[1]修改了,所以num2也进行了修改.
但是!他们并没有访问相同的内存空间.内存空间独立,值同步!
如果我们把赋值该等等于号呢?
显然是15,函数内部>命名参数
再看
function doAdd(num1,num2) {
arguments[1]=10;
console.log(arguments[0]+num2);
}
doAdd(10);如果只传入一个参数10,则返回NaN,undefined,因为arguments的长度是有传入参数决定的,而不是定义函数命名参数决定的(num1,num2). 没有传值得参数自动命名为undefined.
我们必须知道 es中参数传递就是值,按值传递,不能通过引用传递参数.
最后,参数没有重载,同名函数后定义覆盖前定义.
function name(arg0,arg1,arg2){ statements} (注意没有;)
如
function sayHi(name,mes) {
console.log("hello "+name+","+mes );
}
// 调用函数,形参变为实参
sayHi("solin","you are a superhero");
函数在定义时候,不必指定是否含有返回值,实际上在ECMAScript中任何函数在任何时候都可以通过return语句来实现返回值;
function sum(num1,num2) {
return num1+num2;
}
console.log(sum(2,3));输出为:5;
注意!位于return之后的代码永远不会执行!
所以希望某些代码不执行的时候,可以直接在前加return;及之后的代码永远不会执行.
推荐让函数永远有返回值或者永远没有,方便进行调试.
---------
关于参数
!ES中不介意传递多少个参数,也不介意参数的数据类型,理由是ES中内部参数是用数组表示的,直接可以通过arguments[]来进行访问参数.
重写第一段代码,输出结果也是一样的
function sayHi() {
console.log("hello "+arguments[0]+","+arguments[1]);
}
// 调用函数,形参变为实参
sayHi("solin","you are a superhero");
name,mes称之为标识符.
可以通过arguments.length来获取参数个数;
{console.log(arguments.length)};
();=>0 (12)=>1 ("string",1)=>2
当然参数对象和命名对象在es中也是不冲突的.
再看下面的代码
function doAdd(num1,num2) {
arguments[1]=10;
console.log(arguments[0]+num2);
}
doAdd(10,5);输出结构为20,即会重写num2的值, 因为arguments[1]修改了,所以num2也进行了修改.
但是!他们并没有访问相同的内存空间.内存空间独立,值同步!
如果我们把赋值该等等于号呢?
显然是15,函数内部>命名参数
再看
function doAdd(num1,num2) {
arguments[1]=10;
console.log(arguments[0]+num2);
}
doAdd(10);如果只传入一个参数10,则返回NaN,undefined,因为arguments的长度是有传入参数决定的,而不是定义函数命名参数决定的(num1,num2). 没有传值得参数自动命名为undefined.
我们必须知道 es中参数传递就是值,按值传递,不能通过引用传递参数.
最后,参数没有重载,同名函数后定义覆盖前定义.
相关文章推荐
- Javascript基本语法,a-href、img-src、button按钮使用时的跳转问题
- html,css,javascript基本语法
- 细节问题:Java中语法深度透析,以混淆的javascriptlet
- JavaScript基本语法(二)
- SpringMVC绑定基本类型参数的问题
- javascript 判断传入参数及传入数字串,不能获取全部的问题
- XZ_JavaScript之JavaScript的基本语法
- <javascript>简介和基本语法
- Javascript中正则表达式的使用及基本语法
- JavaScript基本语法
- 关于javascript调用webservices的中文参数乱码的问题
- 25个最基本的JavaScript面试问题及答案
- JavaScript笔记02——基本语法(包括函数、对象、数组等)
- 基本数据类型的包装类型作为参数传递,以及其他引用类型作为参数传递,以及List中值的交换的一些问题
- [swift]-使用JavaScript解决WKWebView无法发送POST参数问题
- shell进阶之路的基本用法知识和问题解决(基本语法、正则、日期转化、&符号)
- JavaScript中基本概念的语法理解
- JavaScript01_基本用途和语法
- Javascript无参数和有参数类继承问题解决方法
- 在JavaScript中使用Qt对象成员函数的参数及返回值问题