4.函数
函数放在对象里叫方法
对象(属性,方法)
4.1 定义函数
绝对值函数
定义方式1
function abs(x) {
if(x>=0){
return x;
}else{
return -x;
}
}
定义方式2
var abs=function(x){
}
这样调用
手动抛出异常
function abs(x) {
//手动抛出异常
if(typeof x !=='number'){
throw 'not a number';
}
if(x>=0){
return x;
}else{
return -x;
}
}
arguments 用来定义多个参数
function func1(a, b, c) {
console.log(arguments[0]);
// expected output: 1
console.log(arguments[1]);
// expected output: 2
console.log(arguments[2]);
// expected output: 3
}
func1(1, 2, 3);
rest
<script>
function test(a,b,...rest) {
console.log("a=>"+a);
console.log("b=>"+b);
console.log(rest);
}
</script>
4.2 变量的作用域
(1)在函数内部声明的变量,在函数外部不可使用
(2)两个函数使用了相同的变量名,不会冲突
(3)内部函数可以访问外部函数,反之不行
(4)假设内部函数与外部函数重名,函数查找变量从自身开始找,由内向外查找。内部屏蔽外部变量
(5)提升变量作用域
function a1(){
var x="x"+y;
console.log(x);
var y="y"
}
说明:js执行引擎,自动提升了y声明,但不会提升y的赋值
所有变量都写在前面
(6)全局变量:定义在最外层;默认所有全局变量定义在window对象下
(7)全局对象window
var x="abc";
//alert(x);
alert(window.x);
var new_alert = window.alert;
window.alert = function () {
};
//发现失效了
window.alert(123);
//恢复
window.alert = new_alert;
window.alert('aaa');
规范:由于所有全局变量都绑定到window上,不同的js文件使用了相同的变量,会有冲突
解决方法:自己定义一个自己的全局变量
//唯一全局变量
var juneDate={};
//定义全局变量
juneDate.name="june";
juneDate.add=function (a,b) {
return a+b;
}
let关键字,ES6,建议使用它去定义局部变量
const关键字,ES6,之前是全大写字母定义的,
var PI=‘3.14’
4.3 方法
定义方法:方法是把函数放入对象
var myData={
name:"小明",
birth:"2001",
age:function () {
var now=new Date().getFullYear();
return now-this.birth;
}
}
另一种定义方法
function getAge() {
var now = new Date().getFullYear();
return now - this.birth;
}
var myData = {
name: "小明",
birth: "2001",
age: getAge
}
https://www.runoob.com/w3cnote/js-call-apply-bind.html