常用函数
parseInt(); 首先先查看下标为0的字符 判断是否为有效数字 如果不是返回NaN
parseFloat();判断下标为0的字符 判断是否为有效数字 第一个出现的小数点为有效字符 如果有两个则为无效
isNaN();判断是否为数字 如果是返回false
预解析
相当于会把变量的声明提前 函数也是如此(let不能被预解析)
function a(){
console.log(1);
}
a();
function a(){
console.log(2);
}
a();
预解析会将调用的方法提前 即两个调用a方法 然后预解析最后一个函数会将重复的函数覆盖
函数自调用
(function(message) {
console.log(message);
})("Hello, World!");
第一个括号中的message即是传入的参数 后面那个括号是传进去的值
匿名回调函数
function f1(fn){
console.log(1);
fn();
};
f1((function (){
console.log(2);
}));
然后在f1里面的匿名函数不能自调用 得在f1里面调用这个传递的匿名函数
局部变量和全局变量
var在函数内声明 只能在此函数才能访问到 特点是可以在不同的函数使用名称相同的局部变量(必须是用var var的作用域是整个函数 而let的作用域是{}中)
而全局变量 网页上的所有脚本和函数都能访问到
隐式全局变量
要是变量没使用var则成为隐式全局变量 window作为对象 可被dalete删除
作用域和块级作用域
var的作用域在函数内 函数外不能使用到
let的作用域在{}中 外不能使用到
作用域链
当执行函数时 会先在此函数先寻找 在向创建函数的作用域寻找 依次向上 没有找到则报错
!!!(在return返回时 js的规则是 s()获取的是那个方法的返回值 而不加括号是返回函数的本身)
function f1(){
var i=1;
function f2(){
i=2;
return i;
}
return f2();
}
var s=f1();
console.log(s);
function f1(){
var i=1;
function f2(){
i=2;
return i;
}
return f2;
}
var s=f1();
console.log(s);
事件
onload:页面或图像完成加载时
onclick:单击
onmouseover:鼠标指针移到某元素
onmouseout:鼠标指针移到某个元素
onkeydown:某个键盘按键被按下
onchange:内容被改变