zoukankan      html  css  js  c++  java
  • 关于JavaScript的一些不得不知道的事儿

    1、JavaScript不区分整数和浮点数,统一用Number表示。

    2、NaN这个特殊的Number与所有其他值都不相等,包括它自己:

    NaN===NaN; //false

         唯一能判断NaN的方法是通过isNaN()函数:

    isNaN(NaN); //true
    

    3、null表示一个“空”的值,它和0以及空字符串''不同,0是一个数值,''表示长度为0的字符串,而null表示“空”。而undefined表示值未定义。

    4、JavaScript的数组可以包括任意数据类型。

    [1, 2, 3.14, 'Hello', null, true];
    

      另一种创建数组的方法是通过Array()函数实现:

    new Array(1, 2, 3); // 创建了数组[1, 2, 3]
    

    5、启用strict模式的方法是在JavaScript代码的第一行写上:

    ‘use strict’; 
    

    6、由于多行字符串用 写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用反引号 ` ... ` 表示:

    `这是一个
    多行
    字符串`;
    

      运行结果如下:

    7、模板字符串

      要把多个字符串连接起来,可以用+号连接:

    var name = '小明';
    var age = 20;
    var message = '你好, ' + name + ', 你今年' + age + '岁了!';
    alert(message);
    

      如果有很多变量需要连接,用+号就比较麻烦。这时用ES6的模板字符串很方便。

    var name = '小明';
    var age = 20;
    var message = `你好, ${name}, 你今年${age}岁了!`;
    alert(message);
    

      运行结果完全相同:

    8、JavaScript为字符串提供了一些常用方法,注意,调用这些方法本身不会改变原有字符串的内容,而是返回一个新字符串:

     *针对字符串:

      toUpperCase()把一个字符串全部变为大写;

      toLowerCase()把一个字符串全部变为小写;

      indexOf()会搜索指定字符串出现的位置;

    var s = 'hello, world';
    s.indexOf('world'); // 返回7
    s.indexOf('World'); // 没有找到指定的子串,返回-1
    

      substring()返回指定索引区间的子串;

    var s = 'hello, world'
    s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello'
    s.substring(7); // 从索引7开始到结束,返回'world'
    

     *针对数组:

      要取得Array的长度,直接访问length属性;

      与String类似,Array也可以通过indexOf()来搜索一个指定的元素的位置;

      slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array ;

    var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
    arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C']
    arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
    

      如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array

    var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
    var aCopy = arr.slice();
    aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
    aCopy === arr; // false
    

      push()Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉;

      如果要往Array的头部添加若干元素,使用unshift()方法,shift()方法则把Array的第一个元素删掉;

      sort()可以对当前Array进行排序,它会直接修改当前Array的元素位置,直接调用时,按照默认顺序排序;

      reverse()把整个Array的元素给掉个个,也就是反转;

      splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素;

      concat()方法把当前的Array和任意多个Array连接起来,并返回一个新的Array;形如【arr.concat(arr1,arr2)】

    9、JavaScript对象(访问对象的属性注意事项:)

      若属性是一个有效的变量名,则用 . 来表示(object.prop);如属性为一个无效变量名的话,就要用 [ ‘XXX’] 来访问,不能用点。

    var xiaoming={
        name:"小敏",
        age=12
    }    
    xiaoming.name; //小敏
    

      

    var xiaohong={
        name:"小花",
       'middle-school'  :'No.1 Middle School'
    }
    xiaohong['middle-school']; //No.1 Middle School
    

    10、JavaScript规定,访问不存在的属性不报错,而是返回undefined。

    11、由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性。

    var xiaoming = {
        name: '小明'
    };
    xiaoming.age; // undefined
    xiaoming.age = 18; // 新增一个age属性
    xiaoming.age; // 18
    delete xiaoming.age; // 删除age属性
    xiaoming.age; // undefined
    delete xiaoming['name']; // 删除name属性
    xiaoming.name; // undefined
    delete xiaoming.school; // 删除一个不存在的school属性也不会报错
    

      如果我们要检测xiaoming是否拥有某一属性,可以用in操作符。

    'name' in xiaoming; // true
    'grade' in xiaoming; // false
    注意:如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的。如果--要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法
    var xiaoming = {
        name: '小明'
    };
    xiaoming.hasOwnProperty('name'); // true
    xiaoming.hasOwnProperty('toString'); // false

    12、for...in 循环,把JavaScript对象的熟悉依次循环出来。

       var person={
            name:'小明',
            age:19,
            class:'one'
        }
        for(var key in person){
            console.log(key);//name, age, class
        }
    要过滤掉对象继承的属性,用hasOwnProperty()来实现
    for(var key in person){
    if(person.hasOwnProperty(key)){
    console.log(key);
    }
    }
     

    13、while循环

      for循环在已知循环的初始和结束条件时非常有用。有时for循环容易让人看不清循环的逻辑,此时用while循环更佳。

      while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:

        var s=0;
        var n=99;
        while(n>0){
            s=s+n;
            n=n-2;
        }
    

    14、do { ... } while()循环,它和while循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件。

      注意:用do { ... } while()循环要小心,循环体会至少执行1次,而forwhile循环则可能一次都不执行。

  • 相关阅读:
    [CSS] prefers-reduced-motion
    [VSCode] Adding Custom Syntax Highlighting to a Theme in VSCode
    Subversion/Git/ReviewBoard工作流程
    oracle hints
    Node.js学习(10)----文件系统fs
    网络子系统41_inet_peer平衡二叉树的删除
    由链表初始化看C语言的二级指针
    挣值管理不是搞数字游戏(4)——让挣值管理实用!
    关于数据库一致改关闭下redo日志文件丢失的处理办法的总结
    Android 操作系统的内存回收机制
  • 原文地址:https://www.cnblogs.com/candy-Yao/p/7660533.html
Copyright © 2011-2022 走看看