day39 数组 函数 对象 内置对象

1. 数组
    数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整。
    1.1 通过数组字面量创建数组
        // 创建一个空数组
        var arr1 = [];
        // 创建一个包含3个数值的数组,多个数组项以逗号隔开
        var arr2 = [1, 3, 4];
        // 创建一个包含2个字符串的数组
        var arr3 = ['a', 'c'];

        // 可以通过数组的length属性获取数组的长度
        console.log(arr3.length);
        // 可以设置length属性改变数组中元素的个数
        arr3.length = 0;
    1.2 获取数组元素
        // 格式:数组名[下标]   下标又称索引
        // 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。
        var arr = ['red', 'green', 'blue'];
        arr[0]; // red
        arr[2]; // blue
        arr[3]; // 这个数组的最大下标为2,因此返回undefined
    1.3 数组遍历
        for(var i = 0; i < arr.length; i++) {
            // 数组遍历的固定结构
        }
    1.4 数组中新增元素
        // 格式:数组名[下标/索引] = 值;
        // 如果下标有对应的值,会把原来的值覆盖,如果下标不存在,会给数组新增一个元素。
        var arr = ["red", "green", "blue"];
        // 把red替换成了yellow
        arr[0] = "yellow"
        // 给数组新增加了一个pink的值
        arr[3] = "pink";
        数组的push方法
        // 格式:数组名.push()
        // 如果下标有对应的值,会把原来的值覆盖,如果下标不存在,会给数组新增一个元素。
        var arr = ["red", "green", "blue"];
        arr.push(“pink”);
2. 函数
    2.1 函数的定义
        函数声明
            function 函数名(){
                //函数体        
            }
        函数表达式
            var fn = function() {
              // 函数体
            }
    2.2 函数的调用
        函数名();
    2.3 函数的参数
        语法:
            // 函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部
            // 带参数的函数声明
            function 函数名(形参1, 形参2, 形参...){
              // 函数体
            }
            // 带参数的函数调用
            函数名(实参1, 实参2, 实参3);
    2.4 函数的返回值
        返回值语法:
            //声明一个带返回值的函数
            function 函数名(形参1, 形参2, 形参...){
              //函数体
              return 返回值;
            }
            //可以通过变量来接收这个返回值
            var 变量 = 函数名(实参1, 实参2, 实参3);
    2.5 函数的内置对象
        JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参。arguments是一个伪数组,因此也可以进行遍历。
        arguments数组中前几个元素是函数的参数
        callee属性:函数的本身
        callee.name:函数的名字
        length属性:实参的个数
        callee.length:形参的个数
    2.6 匿名函数
        匿名函数:没有名字的函数
        匿名函数如何使用?
        匿名函数不能通过直接调用来执行,因此可以通过匿名函数的自调用的方式来执行
        (function () {
            alert(123);
          })();
3. 预解析
    3.1 函数提升    
        func();
        function func(){
            alert("Funciton has been called");
        }
        解析后
            function func(){
                alert("Funciton has been called");
            }
            func()
    3.2 变量提升
        alert(a);
        var a = 1;
        解析后    
        var a;
            alert(a);
                a = 1;
    3.3 函数同名
        func1();
        function func1(){
            console.log('This is func1');
        }
        func1();
        function func1(){
            console.log('This is last func1');
        }
        解析后
            function func1(){
            console.log('This is last func1');
            }
            func1();
            func1();
    3.4 变量和函数同名
        alert(foo);
        function foo(){}
        var foo = 2;
        解析后
            function foo(){};
            alert(foo);
            foo = 2;
    3.5 函数表达式不会被提升
        func();
        var func = function(){
            alert("我被提升了");
        };
        error:func is not a function
4. 作用域
    4.1 全局作用域
        直接编写在 script 标签之中的JS代码,都是全局作用域;
        者是一个单独的 JS 文件中的。
    4.2 局部作用域
         在函数内部就是局部作用域,这个代码的名字只在函数的内部起作用
    4.3 隐式全部变量
        function foo () {
            var i1 = 1 // 局部
            i2 = 2, // 全局
            i3 = 3; // 全局
        }
5. 对象
    5.1 对象的创建方式
        对象字面量
            var o = {
              name: 'zs',
              age: 18,
              sex: true,
              sayHi: function () {
                console.log(this.name);
              }
            };
        new Object()创建对象
            var person = new Object();
              person.name = 'lisi';
              person.age = 35;
              person.job = 'actor';
              person.sayHi = function(){
              console.log('Hello,everyBody');
            }
        工厂函数创建对象
            function createPerson(name, age, job) {
              var person = new Object();
              person.name = name;
              person.age = age;
              person.job = job;
              person.sayHi = function(){
                console.log('Hello,everyBody');
              }
              return person;
            }
        自定义构造函数
            function Person(name,age,job){
              this.name = name;
              this.age = age;
              this.job = job;
              this.sayHi = function(){
                console.log('Hello,everyBody');
              }
            }
    5.2 对象的使用
        遍历对象的属性
        通过for..in语法可以遍历一个对象
        删除对象的属性
            function fun() {
              this.name = 'mm';
            }
            var obj = new fun();
            console.log(obj.name); // mm
            delete obj.name;
            console.log(obj.name);
6. Js错误
    6.1 try catch
        try 语句允许我们定义在执行时进行错误测试的代码块。
        catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
        var txt="";
         function message() {
             try { adddlert("Welcome guest!"); }
            catch(err) { txt="本页有一个错误。\n\n";
            txt+="错误描述:" + err.message + "\n\n";
             txt+="点击确定继续。\n\n";
             alert(txt);
        } }
    6.2 finlly 语句
        finally 语句不论之前的 try 和 catch 中是否产生异常都会执行该代码块。
    6.3 throw 语句
        throw 语句允许我们创建自定义错误。
            正确的技术术语是:创建或抛出异常(exception)
        语法:throw exception
            异常可以是 JavaScript 字符串、数字、逻辑值或对象。
7. 内置对象
    7.1 Math 对象    
        常用属性
            Math.Pi
        常用方法
            Math.random()      生成随机数
            Math.floor()         向下取整
            Math.ceil()          向上取整
            Math.round()        取整,四舍五入
            Math.abs()          绝对值
            Math.max()         最大值
            Math.min()         最小值  
            Math.sin()          正弦
            Math.cos()          余弦
            Math.pow()         求指数次幂
            Math.sqrt()         求平方根
    7.2 Date 对象
        1. 创建日期对象
            var date = new Date();
        2. 日期的原始值
            getTime():获取1970年1月1日至今的毫秒数
            valueOf();原始值,获取1970年1月1日至今的毫秒数
        3. 获取日期指定部分
            getMilliseconds()
            getSeconds()  // 返回0-59
            getMinutes()  // 返回0-59
            getHours()    // 返回0-23
            getDay()      // 返回星期几 0周日   6周6
            getDate()     // 返回当前月的第几天
            getMonth()    // 返回月份,***从0开始***
            getFullYear()  //返回4位的年份  如 2016
    7.3 Array 对象
        1. 创建数组对象的两种方式
            1、字面量方式
            2、new Array()
        2. 检测一个对象是否是数组
            instanceof    如果返回true就是数组,false是非数组
            Array.isArray() 如果返回true就是数组,false是非数组
            valueOf()     返回数组对象本身
        3. 尾部操作
            push()  添加元素
            pop()   删除元素
        4. 头部操作
            shift()   删除元素
            nshift() 添加元素
        5. 排序方法
            reverse()   翻转数组
            sort(sortby); sortby,可选参数,规定排序顺序,必须是函数
        6. 操作方法
            concat()    把参数拼接到当前数组、 或者用于连接两个或多个数组
            slice(start,end)     1、从start开始截取元素,到end结束,包括start,不包括end,返回新数组,start,end是索引,
            splice()    1、从start开始截取元素,截取length个,,返回新数组,start是索引,length是个数
        7. 位置方法    
            indexOf()        都是找位置 返回索引值 没有找到返回 -1,第一次出现位置
            lastIndexOf()   如果没找到返回-1,元素最后一次出现的位置
        8. 数组迭代方法
            1、forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数
                array.forEach(function(currentValue, index))
                currentValue  必需。当前元素
                Index   可选。当前元素索引值
            2. filter ()与map ()
                filter()根据指定条件过滤元素,返回新数组 ;
                map()数根据数学运算,返回新数组
                    //filter():根据指定条件过滤元素,返回新数组
                      var new1 = arr.filter(function (value, index) {
                        return value >= 33;
                      })
                      console.log(new1);
                      //map():根据数学运算,返回新数组
                      var new2 = arr.map(function (value, index) {
                        return Math.pow(value, 2);
                      })
        9. 清空数组
            arr = []
            arr.length = 0
            arr.splice(0, arr.length)
        10. 数组转化字符串
            join()数组转化为字符串,以参数分割
    7.4 String 对象
        1. 字符串的不可变
            var str = 'abc';
            str = 'hello';
            // 当重新给str赋值的时候,常量'abc'不会被修改,依然在内存中
            // 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
            // 由于字符串的不可变,在大量拼接字符串的时候会有效率问题
        2. 创建字符串对象
            var str = new String('Hello World');
            // 获取字符串中字符的个数
            console.log(str.length);
        3. 字符串对象的常用方法
            字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串
            1 字符方法
                charAt()        //获取指定位置处字符
                charCodeAt()    //获取指定位置处字符的ASCII码
                str[0]          //HTML5,IE8+支持 和charAt()等效
            2 字符串操作方法
                concat()        //拼接字符串,等效于+,+更常用
                slice(start,end)         //从start位置开始,截取到end位置,end取不到
                substring(start,end)     //从start位置开始,截取到end位置,end取不到
                substr(start,length)        从start位置开始,截取length个字符
                indexOf()       //返回指定内容在元字符串中的位置,,如果没有,返回-1;(从前往后,检索到第一个就结束)
                lastIndexOf()   //返回指定内容在元字符串中的位置,,如果没有,返回-1;(从后往前,检索到第一个就结束)
                trim()          //只能去除字符串前后的空白
            3. 大小写转换方法
                    toUpperCase()   //转换大写
                    toLowerCase()   //转换小写
                    search()//方法用于检索字符串中指定的子字符串,返回子字符串的起始位置
                    replace(old,new) //替换字符串替换字符串 new替换old
                    split() //分割字符串 返回的是一个数组。。数组的元素就是以参数的分割的
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值