字符串

一、严格模式
01. 严格模式(ES5开始新增的)的目的:
              - 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
              - 消除代码运行的一些不安全之处,保证代码运行的安全;
              - 提高编译器效率,增加运行速度;
              - 为未来新版本的Javascript做好铺垫。

02. 开启严格模式:
想开启严格模式,直接在代码最开始的位置写上字符串 use strict。

03. 严格模式的规则:
             • var:定义变量的关键字var必须要有
             • with:不能使用with
             • this:不能指向全局对象
             • 参数:形参不能重名
             • 八进制:禁止八进制表示法
             • arguments:不允许对arguments赋值。arguments不再追踪参数的变化,禁止使用arguments.callee。

-严格模式的作用域范围:

针对整个脚本的:“use strict”写在script标签的第一行 

针对一个函数的:“use strict”写在函数的第一行

针对一个文件的:在js文件里尽量使用自运行函数,即整个js文件的代码都放在自运行函数里 (function(){ "use strict";})();

 

二、ES5 中常用的数组方法

01. 位置方法

indexOf();
     功能:在数组里查找某个元素的位置(第一次出现的位置)。
     参数:
          要查找的数 num
          查找的起始位置,可选参数,如果不写,默认是从0开始查找
    返回值:num在数组里的下标,如果说,num在arr里没有的话,返回的是 -1;

lastIndexOf();
    功能:在数组里查找某个元素的位置(最后一次出现的位置)。
    参数:
       要查找的数 num
       起始位置;
    返回值:num在数组里的下标,如果说,num在arr里没有的话,返回的是 -1;

回调函数示意图:

 

02. 迭代方法

- 迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。

- 每一次对过程的重复称为一次“迭代”。

filter:过滤 (结果应该比原始数组的内容少了)

     功能:在原始数组里进行元素的筛选

     参数:回调函数

     返回值:新的数组

     如:

     var ages = [30,12,16,8,18,25];

     把数组 ages里成年的人(大于等于18)挑出来。

forEach();

      fn的参数:

      item:数组的每个元素

      index:数组的下标

      arr:数组本身;

 

map(); 映射
功能:把原始数组的元素进行一些处理,把处理结果放在一个新的数组里(映射)
参数:回调函数(对原始数组每个元素的处理)
返回值:新的数组

map和forEach的区别:
       map      会产生新的数组, 即把执行结果放在新的数组里
       forEach   不会产生新的数组,即执行结果会改变原始的数组。

forEach,map,filter的相同点:
1、参数都是回调函数,回调函数里的参数也是也一样的。
2、在这三个函数内部都会遍历原始数组。

forEach,map,filter的区别:
1、forEach:遍历的意思,把原始数组的元素内容进行修改
2、map:映射,产生一个新的数组(副本),新的数组是原始数组进行运算(加工)后的结果,原始数组不变。
3、filter:过滤,把原始数组中每个元素满足条件的元素跳出来,放在一个新的数组里(新的数组里的内容是原始数组内容的一部分)。

03. 归并方法

- reduce()

-reduceRight()

这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。

 

三、创建字符串

- 字面量                注意:字母量定义的字符串是基本类型

 

- 构造函数创建     注意:用构造函数方式定义的字符串是引用类型

 

四、字符集

01. ASCII 字符集

- ASCII美国信息交换标准代码

计算机里只认识0和1 (记住就行)。
如何让计算机认识英文字母的。ASCII码;
ASCII码 就是  英文字母及键盘上每一个键  和 一个数字对应的编码(密码本)
ASCII码就是一个对照表(字符和数字的对照表)
  a  97   --> 97 可以转换为二进制的0和1
  b  98
  c  99
 有了ASCII码以后,计算机认识了英文,当然也能识别我们键盘按下的每一键。

02. unicode 编码

- ASCII 只有这 128 个字符的编码结构,对于这个世界来说肯定是不够用的

- 因为我们的汉字没有办法存储,包括一些其他国家的语言也没有办法存储

- 所以就出现了 unicode 编码,也叫(万国码,统一码)

- unicode 对照表就是一个和 ASCII 一样的对照表,只不过变得很大很大,因为存储的内容特别的多

- 而且包含了世界上大部分国家的文字,所以我们的文字和字符现在在存储的时候,都是按照 unicode

编码转换成数字进行存储

- 我们的 UTF-8 就是一种 8 位的unicode字符集

- API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供

应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作

机制的细节。

 

03. GB2312码:让计算机认识了中文

 汉字(简体汉字)和数字的对照码

 

04. JavaScript编程语言里的编码是unicode编码;
 即汉字也是合法的字符。
汉字可以作为变量名,但是不推荐。
var 年龄 = 12; 
console.log(年龄);

 

五、字符串的常用方法

- charAt(num):返回对应字符串索引的内容。

- charCodeAt(num):返回对应的字符串索引的内容的unicode编码

- String.fromCharCode(unicode编码):将参数中的编码返回成对应的字符串的内容,不需要定义字符串变量,多个编码用逗号分隔。

                                                              该函数的前面写的是构造函数的名字,不是字符串变量。

- split():根据分隔符、将字符串拆分成数组(和数组的join函数是相逆的)

- substring():用来截取字符串的内容。  (跟数组的slice()函数有点类似)

功能:截取字符串的一部分字符;
 参数:
     起始下标:正整数
     结束下标(不含)(可选的参数):正整数
 返回值:截取的结果字符串

 

 

- substr(start, length):用来截取字符串的内容。

功能:截取字符串中一部分
参数:
起始下标:0和正整数
      长度:截取的字符串的长度(可选的参数)0和正整数
返回值:截取后的字符串

- toUpperCase():转换成大写。

- toLowerCase():转换成小写。

- slice():截取字符串的方法,如果为负数,从后往前进行截取,包括开始的索引。

功能:截取字符串中的一部分
参数:
起始下标:可以是负数。
结束下标:可以是负数(可选),如果说slice函数的参数是负数的话,那么表示从尾部算起,-1表示最后一个字符,-2表示倒数第二个字符;
返回值:字符串的一部分

=======slice和substring的区别:
1、substring的参数只能是 0 和 正整数。
2、slice的参数可以是 0,正整数和负整数。
3、如果说slice函数的参数都是0和正整数的话,那么和substring是同样的意思。

indexOf();
功能:在字符串里查找指定的字符串,返回第一次出现的下标
  如 var str="hello hello";  str.indexOf("e") ; 结果就是 1
  参数:
      查找的字符串
      起始位置(查找的起始位置) (可选参数)
 返回值:下标。

lastIndexOf();
功能:在字符串里查找指定的字符串,返回最后一次出现的下标
如 var str="hello hello";  str.indexOf("e") ; 结果就是 7
参数:
查找的字符串
起始下标
返回值:下标。

- indexOf和lastIndexOf():区别是如果第一个参数为负数,数组是从后往前找,字符串当做0处理。

concat();
功能:把字符串和其它字符串拼接起来
参数:
   若干个字符串
 返回值:拼接的结果字符串

 

六、字符串的属性 length:返回字符串的长度(字符的个数)

 

 

案例1:判断回文字符串

 

 

案例2:数字字母混合验证码

 

 

案例3:"aabccd"统计每个字符出现的次数,去掉重复的字符,使结果显示 abcd

posted @ 2020-03-26 12:03  是832  阅读(234)  评论(0)    收藏  举报