js复习笔记(二)

函数章

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*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就是谁。


一个半小时的课程内容很丰富,函数一章内容有点多,可以说是核心,笔记仍有待完善。

你可能感兴趣的:(js复习笔记(二))