js基础

2018-09-22  本文已影响0人  金桔柠檬加冰

js基础

函数

重点掌握

​ 如何声明,如何调用,如何写函数

声明

1 关键字

function 函数名(参数){函数体}

​ 2 函数表达式

var 变量名 = function(参数){函数体}

调用

函数名(实际参数)

写函数的步骤

函数的返回值

三种情况

return作用

函数的参数

​ 形参,实参

​ 形参的值发生变化,不影响实参的值

可以有省略参数的机制

一般实现由2种方式:

函数的执行过程

匿名函数

没有名字的函数------匿名函数无法单独存在

不定个数的参数的处理方式

    function getSum(a,b){
        var sum = 0;
        for(var i=0;i<arguments.length;i++){
            sum += arguments[i]
        }
        return sum
    }
    console.log(getSum(10,20));
    console.log(getSum(10,20,30));

特别注意

#### 什么东西可以作为变量的值 - 数据

什么东西可以作为函数的参数

什么可以作为返回值

数据都可以,函数也是数据的一种,函数也可以作为返回值

逻辑运算符的短路运算规则

逻辑或(||)

逻辑与(&&)

给每个参数设置一个默认值,如果没有传递进来,就使用默认值参与运算

a = a || 0;

​一般在调用以参数传入的函数的时候,需要先判断这个东西是不是函数

f && f();

匿名函数

使用场景:

自调用函数

​ 语法:(function(形参){})(实参);

​ 作用:自调用函数的作用就是形成一个封闭的作用域,把里面的变量保护起来

预解析和作用域

看看函数两种声明方式的区别

​ 函数表达式必须在完成声明之后,才可以调用

预解析

js在执行之前,会先预解析

​ 预解析会把当前作用域下的变量声明和函数的声明提升到当前作用域的最顶端,但是变量的赋值,函数的调用都还在原来的位置,还是原来的顺序

​ 简单说:

​ 在执行之前: 把 变量和函数 的声明 提升到 {当前} 作用域 的最顶端

作用域

​ 作用的范围,有效的范围

​ 指的是变量和函数的有效范围

作用域链

​ 多层作用域关系--作用域链

​ 变量或者函数的访问规则

内置对象

​ 获取当前的系统日期和时间

内置日期对象的多个方法

Math对象

// 随机取值函数
// floor向下取整,ceil向上整
function getRandom(n,m){
        return Math.floor(Math.random() * (m-n + 1) + n);
    }

数组对象

数组的方法

arr.sort(function(a,b){
        return a - b;
    });

注意

小细节

字符串

根据索引获取对应的字符

对象

面向对象思想

把编程中遇到的所有的功能,都认为是某个对象的方法

面向对象思想的三大特征: 封装性 , 继承性 , 多态性

什么叫对象

​ 从编程的角度讲: 对象就是属性和方法的集合

​ 属性和方法的表示方式: 键值对

在编程中,就把事物的特征叫做对象的属性,把事物的行为叫做方法

内置对象

date math array string -- js原本就给我们封装好的一堆的代码的高度封装

自定义对象

将工厂模式变成自定义构造函数

​ 1、改名字 把动词+名词结构 ---> 名词结构,首字母大写

​ 2、把new Object去掉 还有return 去掉

​ 3、把之前代表对象的变量,改成this

// 更加建议使用自定义构造函数 -- 简洁,更加符合编程人员的审美
    function Computer(color,brand,price,weight){
        this.color = color;
        this.brand = brand;
        this.price = price;
        this.weight = weight;
        this.open = function(){
            console.log('等灯等灯');
        }
        this.close = function(){
            console.log('叮咚');
        }
    }

    // 在使用自定义构造函数创建对象的时候,记得一定要new
    var c1 = new Computer('red','apple','¥19998','3kg');
    console.log(c1);
    c1.close()

new的秘密

new做的工作

this(重点)

注意

​ 普通函数的角色

​ 所有window的属性和方法在使用的时候,都可以把window省略

对象

属性和方法

删除/添加对象的属性

​ 添加属性:

​ 对象.属性 = 值;

​ 删除:

​ delete 只能用于删除的对象的属性

​ delete 对象.属性

值类型和引用类的区别

简单类型(值类型)
复杂类型(引用类型)
    值类型和引用类型的异同:
        1 值类型存储在栈空间
            引用类型存储在堆空间,堆空间的地址会存储在栈空间上
        2 当我们以一个变量作为另一个变量的值的时候,其实是把栈空间中的值复制一份
        3 当我们堆形参进行修改的时候
            如果实参是值类型,形参和实参就互不影响
            如果实参是引用类型,形参会影响实参       

上一篇 下一篇

猜你喜欢

热点阅读