1、参数
调用函数时:
- 未传递参数,js 自动将其设定为 undefined
- 传递过多的参数,js 会将多余的参数忽略
每个函数内部都有一个内建的 arguments 数组(实际上并不是数组,而是一个类似数组的对象),它能返回函数所接收的所有参数。
2、预定义函数
- parseInt() 将任何输入值转换为整数类型输出,转换失败返回NaN。第二个参数可设置进制,不指定第二参数默认为十进制(例外:1、参数以0x开头默认为十六进制。2、参数以0开头,默认为八进制。)
parseInt('abc123') // NaN
parseInt('123abc') // 123
- isFinite() 用来检查输入是否是一个既非 infinity 也非 NaN 的数字。
isFinite(Infinity) // false
isFinite(12) // true
- eval() 将其输入字符串当做JavaScript代码执行(尽量避免使用该函数)
3、变量的作用域
- 声明一个变量时没有使用var 语句,该变量就会被默认为全局变量。
- 本地和全局作用域问题:
var a = 123;
function f(){
alert(a);
var a = 1;
alert(a);
}
f();
上面的代码中:
1、第一个alert() 实际上显示的是 undefined ,这是因为函数域始终优先于全局域,所以局部变量 a 会覆盖掉所有与它同名的全局变量,尽管在 alert() 第一次被调用时,a 还没有被正式定义,但该变量本身已经存在于本地空间了。
2、第二个 alert() 显示 1 。
4、函数也是数据
- 自调函数
(
function(){
alert('boo')
}
)()
上面代码中第二对括号起到的作用是“立即调用”,同时也是我们向匿名函数传递参数的地方。