function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
var abs = function (x) {
if (x >= 0) {
return x;
} else {
return -x;
}
};
//比定义的参数多
abs(10, ‘blablabla‘); // 返回10
abs(-9, ‘haha‘, ‘hehe‘, null); // 返回9
//比定义的参数少
abs(); // 返回NaN --> 此时abs(x)函数的参数x将收到undefined,计算结果为NaN
// foo(a[, b], c)
// 接收2~3个参数,b是可选参数,如果只传2个参数,b默认为null:
function foo(a, b, c) {
if (arguments.length === 2) {
// 实际拿到的参数是a和b,c为undefined
c = b; // 把b赋给c
b = null; // b变为默认值
}
// ...
//要把中间的参数b变为“可选”参数,就只能通过arguments判断,然后重新调整参数并赋值
}
function foo(a, b) {
var i, rest = [];
if (arguments.length > 2) {
for (i = 2; i<arguments.length; i++) {
rest.push(arguments[i]);
}
}
console.log(‘a = ‘ + a);
console.log(‘b = ‘ + b);
console.log(rest);
}
function foo(a, b, ...rest) {
console.log(‘a = ‘ + a);
console.log(‘b = ‘ + b);
console.log(rest);
}
foo(1, 2, 3, 4, 5);
// 结果:
// a = 1
// b = 2
// Array [ 3, 4, 5 ]
foo(1);
// 结果:
// a = 1
// b = undefined
// Array []
//如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined)
//用rest参数编写一个sum()函数,接收任意个参数并返回它们的和
‘use strict‘;
function sum(...rest) {
var result = 0;
for(var value of rest){
result += value;
};
return result;
}
// 测试:
var i, args = [];
for (i=1; i<=100; i++) {
args.push(i);
}
if (sum() !== 0) {
alert(‘测试失败: sum() = ‘ + sum());
} else if (sum(1) !== 1) {
alert(‘测试失败: sum(1) = ‘ + sum(1));
} else if (sum(2, 3) !== 5) {
alert(‘测试失败: sum(2, 3) = ‘ + sum(2, 3));
} else if (sum.apply(null, args) !== 5050) {
alert(‘测试失败: sum(1, 2, 3, ..., 100) = ‘ + sum.apply(null, args));
} else {
alert(‘测试通过!‘);
}
//定义一个计算圆面积的函数area_of_circle(),它有两个参数:r: 表示圆的半径;pi: 表示π的值,如果不传,则默认3.14
‘use strict‘;
function area_of_circle(r, pi) {
var temp = 3.14;
if(arguments.length > 1){
temp = pi;
}
return temp*r*r;
}
// 测试:
if (area_of_circle(2) === 12.56 && area_of_circle(2, 3.1416) === 12.5664) {
alert(‘测试通过‘);
} else {
alert(‘测试失败‘);
}
//网友答约:pi=pi?pi:3.14; return pi*r*r;
‘use strict‘;
function foo() {
var x = ‘Hello, ‘ + y;
alert(x);
var y = ‘Bob‘;
}
foo();
function foo() {
var y; // 提升变量y的申明
var x = ‘Hello, ‘ + y;
alert(x);
y = ‘Bob‘;
}
// 唯一的全局变量MYAPP:
var MYAPP = {};
// 其他变量:
MYAPP.name = ‘myapp‘;
MYAPP.version = 1.0;
// 其他函数:
MYAPP.foo = function () {
return ‘foo‘;
};
//把自己的代码全部放入唯一的名字空间MYAPP中,会大大减少全局变量冲突的可能
‘use strict‘;
function foo() {
for (var i=0; i<100; i++) {
//
}
i += 100; // 仍然可以引用变量i
}
‘use strict‘;
function foo() {
var sum = 0;
for (let i=0; i<100; i++) {
sum += i;
}
i += 1; // SyntaxError
}
原文:http://www.cnblogs.com/deng-cc/p/6607906.html