JS函数(1)
一、JS函数的基本知识点
1.定义函数:
function fx(x){
var s=-x;
return s;
}
//这种定义方法等同于var fx= function(x){..} 因为函数实际上本身就是一个对象,其实就是将函数名fx视为指向该函数的变量。
一个函数执行到return结束,如果没有return,则返回undefined.。
2.作用域
function f(){
var x =1;
z=x+y;
var y=2;
alert(z); //不报错,返回NaN 因为y是undefined
}
function b(){
var x=2;
var a=3;
z=x+a
}
总结:
I)函数内部定义的变量只在本函数体(本函数及其子函数)有用;不同函数间是相互独立的。
II)函数提升,上述alert(z)不报错,是因为JS首先扫描整个函数体,把申明的变量都提到前面,但是赋值仍然得执行到对应语句才能进行赋值。
因此,需要遵守把所有需要定义的变量都放在函数首部。
补充:
对于for来说,不是在函数内部进行定义的。例如:
function f(){
for (var i =0;i<1=;i++)
{...}
i=i+1;//这里i仍然可以使用i
}
ES6引进的let用于块级申明:
function f(){
for (let i =0;i<1=;i++)
{...}
i=i+1;//这里i不可以使用i
}
const是对于常量的定义
const PI=3.14; //常量用大写字母表示
3.函数调用
fx(1); //返回-1
fx(1,2,3);//返回-1
fx();//返回NaN
在函数调用的时候,传入的参数可以比定义的参数多,但是只取定义的个数;少的话,就是返回undefined。
二、常见方法
1.arguments
在函数内部,arguments用于读取传入参数。
function foo(x) {
alert(x); // 这里显示传入的第一个 1
for (var i=0; i<arguments.length; i++) {
alert(arguments[i]); // 用arguments进行循环遍历 1, 2, 3
}
}
foo(1, 2, 3);
现在我们设计一计算任意个数字的求和方法,用arguments进行编写:
function sum(x,y){//这里我们定义了两个变量,当需要对多个数字(大于2)求和
var rest=[],sum=0; //定义一个数组存储多余传入的参数
for(var i=0;i<arguments.length;i++){
rest.push(argument[i]); //将多余的参数传入rest数组中
}//接下来就需要算1+2,再和rest中的3求和,很麻烦
...
...
}
sum(1,2,3)
所以当我们传入任意个参数时,我们需要使用一个新的函数–rest。
2.rest
function sum(...rest){//这里我们没有定义参数
var sum=0; //这里sum变量和方法是可以相同的
for (var i of rest){
sum=sum+i;
}
return sum;
}
sum(1,2,3) //返回6
3.typeof
这里补充一下typeof方法,用于判断传入参数的类型。
if(typeof a !== 'number'){ //判断是否为数字
..
}
typeof返回的值是字符串,有number,string,function,bollen,object ,undefined六种。
I)number
用typeof进行判断时候,下面的非常规的数字也是返回number。
Infinity 无穷大特殊值
NaN 特殊的非数字值
Number.MAX_VALUE 可表示的最大数字
Number.MIN_VALUE 可表示的最小数字(与零最接近)
Number.NaN 特殊的非数字值
Number.POSITIVE_INFINITY 表示正无穷大的特殊值
Number.NEGATIVE_INFINITY 表示负无穷大的特殊值
II)string
比如typeof(“123”)返回的值是string。
III)boolean
比如typeof(true)返回的值是boolean。
IV)object
对于对象、数组、null 返回的值是 object 。比如typeof(window),typeof(document),typeof(null)返回的值都是object。
V)function
比如:typeof(eval),typeof(Date)返回的值都是function。
VI)undefined
如果运算数是没有定义的(比如说不存在的变量、函数或者undefined),将返回undefined。比如:typeof(sss)、typeof(undefined)都返回undefined。
待续