javascript学习笔记07

javascript预解析机制:

                -预解析

                -再逐行解析

全局作用域、局部作用域都是通过以下两个步骤进行:

 1.先读取var的变量(没有使用var的变量不会被解析),赋值为undefind,如果两个变量重名,无影响

  函数名与变量名重名,直接去掉变量名,不进行解析,如果函数中存在参数,那么参数也一样使用var       进行解析

2.再读取function后面的函数---fn,如果有多个函数重名,那么取最后一个函数进行声明.

解析顺序:

1.全局变量

2.函数

3.函数局部变量

预解析完成后再逐行解析代码

通过逐行解读代码进行赋值,改变变量的属性值。遇到函数,直接跳过,因为与解析已经声明过。

解析代码前,预解析做了哪些事情?

1.把变量的声明提前了---提前到当前所在的作用域上面,只会提升声明,不会提升赋值

2.把函数的声明提前了---提前到当前所在的作用域上面,只会提升声明,不会提升调用

3.先提升var,再提升function

字符串内置函数使用

字符串常用的方法和属性:

- .length ---> 返回字符串的长度

- .charAt(索引) ---> 返回值是指定索引位置的字符串,索引值超出返回空字符串

- .concat(字符串1, 字符串2, ..., 字符串n) ---> 返回值是拼接之后的新字符串

- .indexOf(要找的字符串, 从某个位置开始找的索引) ---> 返回值是要找的字符串第一次出现的值,没找到返回-1

- .lastIndexOf(要找的字符串, 从某个位置开始找的索引) ---> 倒序查找,效果同上

- .replace("原来的字符串", "新的字符串") ---> 替换字符串

- .slice(开始的索引a, 结束的索引b) ---> 从索引为a的地方开始截取,到b的位置结束,不包括b不包后),返回值是提取出来的字符串

- .substr(开始的位置, 截取的个数) ---> 返回值是提取出来的字符串

- .substring(开始的索引a, 结束的索引b) ---> 从索引为a的地方开始截取,到b的位置结束,不(包前不包后),返回值是提取出来的字符串

- .split("要干掉的字符串", [分隔后留下的个数])

- .trim() ---> 去掉字符串前后端的空格

- .toLowerCase() ---> 转小写

- .toUpperCase() ---> 转大写

console.log(str3.indexOf("a"));// 不写第二个参数,默认从索引为0的位置开始找
console.log(str3.indexOf("a", 99));
console.log(str3.lastIndexOf("a"));// 不写第二个参数,默认从索引为length-1的位置开始找

console.log(str3.replace("a", "♪(^∇^*)"));
console.log(str3.replace(/a/, "\(^o^)/~"));// 正则表达式的语法
console.log(str3.replace(/a/g, "☆"));// 正则表达式的语法

* 注意 字符串替换并没有将字符串真正的改变,只是得到了我们想要改变的值

// 去除中间的空格
console.log(str3.replace(/ /g, ""));

Array数值内置函数

Array.isArray(对象名) 判断对象是不是数组

对象 instanceof 类型

- .concat(数组1, 数组2, ..., 数组n)组合成新数组

- .push(值)把值追加到数组的末尾,返回值是追加数据之后数组的长度

- .unshift(值)把值追加在数组的前面,返回值是追加数据之后数组的长度

- .pop()删除数组的最后一个,返回值是删除的这个值

- .shift()删除数组的第一个元素,返回值是删除的这个值

- .every(函数)返回值是布尔类型,函数是用来当作参数使用的,函数中要有三个形参,一假即假

- .some(函数)返回值是布尔类型,函数是用来当作参数使用的,函数中要有三个形参,一真即真

- .filter(函数)返回值是数组中每一个符合条件的元素,组成一个新数组,函数有三个形参,看成是过滤的方法

- forEach(函数)遍历数组,想当于一个for循环中有三个形参

- .indexOf(元素值)返回值是元素对应的索引,找不到返回-1

 - .join("字符")返回值是通过这个字符连接的一个字符串

- .reverse()翻转数组

- .sort(函数)排序,不稳定,根据MDN的固定方法

- .splice(开始的位置, 要删除的个数, 替换元素的值)一般用于删除数组中的某个元素,或替换元素或者插入元素

        // 判断类型
        var arr = [];
        console.log(Array.isArray(arr));
        console.log(arr instanceof Array);

        // 合并
        var arr1 = [1, 2, 3, 4];
        var arr2 = [10, 20, 30, 40];
        console.log(arr2.concat(arr1));

        // 追加
        console.log(arr1.push(100));
        console.log(arr1.unshift(200));
        console.log(arr1);

        // 删除
        console.log(arr1.pop());
        console.log(arr1.shift());
        console.log(arr1);

        // .every(函数)一假即假
        var arr3 = [5, 10, 15, 20, 25, 30];
        // ① 要遍历的元素
        // ② 元素所对应的索引
        // ③ 要遍历的数组名
        var flag = arr3.every(function(item, index, arr3) {
            console.log(item, index, arr3);
            return item > 100;
        })
        console.log(flag);

        // .some(函数)一真即真
        var flag2 = arr3.some(function(item, index, arr3) {
            console.log(item, index, arr3);
            return item > 20;
        })
        console.log(flag2);

        // 过滤
        var arr4 = [1000, 2000, 3000, 4000];
        var newArr = arr4.filter(function(item, index, arr4) {
            return item > 2000;
        })
        console.log(newArr);

        // .forEach
        var arr5 = [-1, 0, 7, 99, 85, -18];
        var sum = 0;
        arr5.forEach(function(item, index, arr5) {
            sum += item;
            console.log(item);
        })
        console.log(sum);

        var arr6 = [1, 4, 6, 2, 1, 6, 3, 8];
        console.log(arr6.indexOf(6));
        console.log(arr6.join("|"));
        console.log(arr6.reverse());

        var arr7 = [11, 54, 2, 76, 42, 7];
        console.log(arr7.sort());

        var arr8 = ["虞姬", "金蝉", "蔡文姬", "伽罗", "明世隐"];
        // 索引值为2的地方插入孙悟空
        console.log(arr8.splice(2, 0, "孙悟空"));// 返回值是要删除的元素
        console.log(arr8);

        // 删除索引值为4
        console.log(arr8.splice(4, 1));
        console.log(arr8);

        // 索引值为4的替换为"澜"
        console.log(arr8.splice(4, 1, "澜", "赵云"));
        console.log(arr8);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WA终结者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值