javascript(严格模式 es5新增的数组方法 字符串 字符串的常见方法 ASCII编码)

4 篇文章 0 订阅

严格模式:

严格模式的好处:规避了代码中的一些不严谨,不规范的用法,提高了编译器执行效率,为后续版本做铺垫

在当前环境的顶部(全局环境,局部环境)

加上两个单词 “use strict”

  1. 变量声明

       /*  a = 10; //报错 必须有声明的关键字 var let
       console.log(a); */
    
  2. 禁止使用with

       /*  var person = {
         name: "huangenpeng",
         age: 20,
       };
       //console.log(person.name, person.age);
       with (person) { //报错 不让with
         console.log(name, age);
       } */
    
  3. 设立eval作用域

       /* eval("var a = 10;console.log(a)");
       console.log(a); //a 是访问不到 */
    
  4. 函数this问题

         /*  function foo() {
         console.log(this); //undefined
       }
       foo(); //确实不知道是谁调用foo
       window.foo(); // window */
    
  5. 删除变量

     /* var a = 10;
       delete a;
       console.log(a); //不能使用delete删除一个变量 */
    
       //b = 20; //报错
       /*  delete b;
       console.log(b); */
    
  6. 函数参数不能重名

     //function foo(x, x) {}
    
  7. 八进制表示法

     //var num = 017; //报错 0o17
    
  8. arguments不追踪参数变化

     function foo(x) {
     x = 1;
     console.log(arguments[0]);
     }
     foo(10);
    
### 普通模式下

this的基本指向 三个环境下this的用法

  //普通函数里this的指向 this指向window
  /*  function foo() {
    console.log(this); //window
  }
  foo(); //window.foo()
  console.log(window); */
  //在一个对象的方法里  this指向obj
  /* var obj = {
    name: "linbinkuan",
    age: 20,
    sayHello: function () {
      console.log(this); //obj
      console.log("大家好,我是" + obj.name);
      console.log("大家好,我是" + this.name);
    },
  };
  obj.sayHello(); */
  //在事件的处理函数里 this指向事件名前面那个DOM对象
  /*  btn.onclick = function () {
    console.log(this); //btn
  }; */
  //在普通模式下,谁调用这个函数或者方法,this就指向谁

es5新增的数组方法

indexOf 返回某个元素在数组中索引,没有该元素,返回-1

  var arr = [10, 20, 20, 30, 40];
  /*  var index1 = arr.indexOf(20);//1
  var index2 = arr.lastIndexOf(20);//2
  console.log(index1, index2); */

forEach 遍历

  /*  var arr = [10, 20, 20, 30, 40];
  var a = arr.forEach(function (item, index) {
    return item * 1.3; //不接收
  });
  console.log(a); */

map 遍历

  /* var a = arr.map(function (item, index) {
    return item * 1.03; //接收返回值
  });
  console.log(a); */

filter 过滤出符合条件的元素

  /* var a = arr.filter(function (item) {
    return item > 20; //过滤出大于20的元素
  });
  console.log(a); */

some 只要有一个元素满足条件 返回true every 所有的元素满足条件 返回true

  /*  var a = arr.some(function (item) {
    return item > 20;
  });
  console.log(a); */
  /*  var a = arr.every(function (item) {
    return item > 20;
  });
  console.log(a); */

reduce 累计 通常会用前两个参数 第一个参数默认是数组中第一个元素,第二个参数默认是数组中第2个元素,这两个参数在函数内部运算之后,会将结果再给到第一个形参,此时第二个形参取的是数组中的第三个元素

  /* var arr = [1, 2, 3, 4, 5];
  var result = arr.reduce(function (a, b) {
    return a + b;
  });
  console.log(result); */
  
   var arr = [
    [1, 2],
    [3, 4],
    [5, 6],
  ]; //数组的扁平化 [1,2,3,4,5,6]

  var a = arr.reduce(function (a, b) {
    return a.concat(b);
  });
  console.log(a);

字符串

    //字符串:有成对的双引号或者单引号引起来的一段字符,可以为空
      /*  var str = "123";
      var str1 = '123';
      var str2 = new String("abc"); */
      //基本操作
      var str = "123abc";
      //取值 默认只能取值,不能修改,如果要修改,需要借助字符串提供一些方法
      console.log(str[3]); //"a"
      console.log(str.length); //字符的个数

字符串里的常见方法

/var str = "abcd";
  //以下方法对源字符串没有影响
  //charAt() 取到指定索引位上的字符
  //var s = str.charAt(1);
  //console.log(s);
  //indexOf()取到某个字符在字符串中的索引 没有 -1
  //var index = str.indexOf("c");
  //console.log(index);
  //1.命名的方法 驼峰
  //2.系统提供的名字,他怎么写,你就怎么记
  //语法 最不应该纠结 规定
  //截取 substring slice substr
  //var s = str.substring(1, 2); //第一个参数起始位,第二个结束位(不包含)
  //var s = str.substring(2, 1);
  //var s1 = str.slice(1, 2);
  //var s1 = str.slice(2, 1); //空
  //var s2 = str.substr(1, 2); //第一个参数起始位,第二个截取的字符个数
  //console.log(s, s1, s2);
  //split 将字符串按照指定分隔符(参数)分割成数组
  //var a = str.split("");
  //var a = str.split("b");
  //console.log(a);

  //replace()替换
  /* var str1 = "abctmdabc"; //不适合正常展示
  var s = str1.replace("tmd", "***");
  console.log(s); */
  //var str1 = "abctmdabctmd"; //不适合正常展示
  //可以通过循环
  //var s = str1.replace("tmd", "***");
  //var s = str1.replace(/tmd/g, "***");
  //console.log(s);
  //concat 合并
  //var str = "abcd";
  //var s = str.concat("e");
  //console.log(s);
  //trim 去掉首尾空格
  /* var str = " abc ";
  var s = str.trim();
  console.log(str.length, s, s.length); */
  //toUpperCase() toLowerCase()
  var str = "aBc";
  console.log(str.toUpperCase());
  console.log(str.toLocaleLowerCase());
ASCII
  //charCodeAt(i) 得到某个位置上字符的ASCII码值
  //var str = "aAc12d";
  //console.log(str.charCodeAt(1), str.charCodeAt(4));
  //fromCharCode(码值)
  //console.log(String.fromCharCode(65));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值