函数章
1.创建绝对值函数
法(一):
function abs(x) {
if(x>=0) {
return x;
} else {
return -x;
}
}
法(二):
var abs = function(x) {
if(x>=0) {
return x;
} else {
return -x;
}
}
2.参数问题
重点是判断参数的“状态”!(有无参数,是否存在问题)
举个例子:
var abs = function(x) {
if(x>=0) {
return x;
} else {
return -x;
}
}
此时的参数可能有问题也可能不存在,那么就要手动抛出异常:
var abs = function(x) {
//手动抛出异常来判断
if(typeof x!== 'number') {
throw 'Not a Number';
}
if(x>=0) {
return x;
} else {
return -x;
}
}
3.arguments
功能:获取传递进来的所有参数,返回的是数组。
var abs = function(x) {
console.log("x=>"+x);
for(var i=0;i<arguments.length;i++) {
*length作用是对应数组长度*
console.log(arguments[i]);
}
if(x>=0) {
return x;
} else {
return -x;
}
}
4.变量作用域
(1)函数体内声明的变量,不能在函数体外使用。
(2)如果两个函数使用了相同的变量名,在函数的内部也不会冲突。
(3)内部函数可以访问外部函数,但外部函数是不可以访问内部函数的
(4)内部函数和外部函数变量重名后不会互相影响。
5.
JS中函数变量是由“内”向“外”查找,如果外部存在同名的函数变量,那么内部函数会自动屏蔽掉外部函数,个人理解是内部函数优先级比外部函数高。
规范:所有的变量定义都放在函数的头部,便于代码维护
提升作用域:
function f() {
var x = "x" + y;
console.log(x);//xundefined
var y = "y";
}
其本质是在头部定义。
6.全局变量
全局对象window。
var x = "xxx";
window.alert(window.x);
其实在操作的时候可以将“winow.”去掉。
【原因:在js里默认所有的全局变量都会自动绑定在window对象上,并且alert()这个函数本身也是一个window对象】
假设没有在函数范围内找到全局变量,就会向外查找,如果在全局作用域都没有找到,就会报错RefrenceError。
7.const常量
定义:只能用全部大写字母,避免修改这样的值。
举个例子说
var PI = "3.14";//其实是可以被改变值的,但是并不是真正意义上的常量。
8.方法
定义:把函数放在对象里面
(而对象里除了方法还有属性,仅此而已)
var ming = {
name:"xiaowei",
birth:2002,
调用方法,一定要加()
比如ming.age()
问题:this关键字到底是什么?
代表函数在运行时自动生成的一个内部对象,只能在函数内部使用,并且this的指向是不确定的,是默认指向调用它的对象。
引用百度的回答是:简单理解为谁调用this所在的方法,this就是谁。
一个半小时的课程内容很丰富,函数一章内容有点多,可以说是核心,笔记仍有待完善。