zoukankan      html  css  js  c++  java
  • js题目小记

    NaN的判断

    在js里面 NaN==NaN 是返回false的
    怎么判断NaN呢 用isNaN(NaN) true!!
    ps: Number.isNaN 和 isNaN 有什么区别呢?
      isNaN 是带隐式类型转换的,Number.isNaN是不做转换的

    字符与ascll码

    //获取ascill码
    'a'.CharCodeAt();
    
    //从ascill获取字符
    String.fromCharCode(97); //"a"

    ps:'a'只是个原始数据类型不是个对象,怎么可以有自己的属性(例如CharCodeAt),其实JS引擎会先对原始数据类型数据进行包装  new String("a")  使它暂时成为一个对象

    判断对象是否有某属性

    //in 注意:in是会查原型链的
    "a" in {a:123} //true
    
    //hasOwnProperty 只会查自身的属性
    var a = {a:123, [Symbol(666)]: 777};
    a.hasOwnProperty('a'); //true;
    Object.getOwnPropertyNames(a); // ['a']
    Object.getOwnPropertySymbols(a); // [Symbol(666)]

    ps:Object是个函数,为什么也会有hasOwnProperty这个属性呢?其实函数也是对象,也可以往函数上添加属性,例如:

    function aaa(){};
    aaa.bbb = 123;
    aaa.bbb   //123

    缩放元素的纯CSS方法

    zoom和scale的区别请看:http://www.cnblogs.com/amiezhang/p/7772813.html

    /*zoom放大两倍,会影响布局,导致回流重绘*/
    zoom: 2;
    
    /*scale放大两倍,不会影响布局,只会导致重绘*/
    transform: scale(2);

    (function(){}).length

    function的length属性可以获取形参的个数

    (function(){}).length  //0
    (function(a,b,c){}).length  //3

    node.cloneNode(deep)

    如果传递给deep的参数是 true,复制当前节点的所有子孙节点。否则,它只复制当前节点。

    <ul id="aaa">
        <li>123</li>
    </ul>
    
    <script>
        let ul = document.getElementById('aaa');
        ul.cloneNode();/*<ul id="aaa"></ul>*/
        ul.cloneNode(true);
        /*
        <ul id="aaa">
            <li>123</li>
        </ul>
        */
    </script>

    URL编码

    encodeURIComponent('http://www.taobao.com'); //"http%3A%2F%2Fwww.taobao.com"

    transitionend事件

    ul.addEventListener('transitionend',function(){
          alert('css3的transition多度动画完了')
    },false)

    这是css3动画和js实现交互的一个方法,如果要多次用,记得removeEventListener

    十五、阻止冒泡

    // cancelbubbel 基本兼容,但不是w3c标准
    ev.cancelBubble = true;
    
    //stopPropagation IE9+
    ev.stopPropagation();
    ev.stopImmediatePropagation();

    怎么看待json

    数据结构来看

    1.txt----------不标准,没有

    2.csv---------有标准格式(逗号分隔,可以在excel打开),但是无法支持复杂数据结构

    3.xml---------有标准格式,但是体积大,前端使用还要解析后才能用

    4.数据库-----性能瓶颈,前端不能直接使用

    5.二进制-----性能高、体积小、速度快,但是不适合大部分语言处理,包括js

    6.json---------有标准格式,性能较高,体积较小,前端不需要进行解析就能直接使用

    不用toLowerCase怎么把一句英文的全部字母,全部变成小写?

    let str = "ThIS Is a tEsT";
    str.replace(/w/g, (item) => {
        let code = item.charCodeAt()
        if(code<97) {
            code +=32 
        }
        return String.fromCharCode(code)
    })

    变量提升

    var aaa = 123;
    function bbb() {
        console.log(aaa);
        if (true) {
            // var aaa = 456; // 这种情况,上面打印aaa是undefined
            let aaa = 456; // 这种情况,上面打印aaa是123
        }
    }
    bbb()
    var a = 123;
    function a() {
        console.log(a)
    }
    a(); // 报错 a is not a function,因为 function 提升优先级高,a = 123覆盖了function a,导致 a =123
    
    a(); // 打印出 function a, 因为 function 提升优先级高,var a 发现 a已经被定义,就跳过提升定义,此时a还没被覆盖成123,a还是个函数
    var a = 123;
    function a() {
        console.log(a)
    }

    暂时性死区

    console.log(a); // 报错,因为暂时性死区
    let a = 123;
    
    console.log(aaa); // 报错,因为暂时性死区
    class aaa {}

    阻碍 function 提升

    console.log(aaa) // 打印 undefined,阻碍了function提升的赋值部分,但是没有阻碍定义部分
    if (true) {
        function aaa() {}
    }

    new.target

    作为构造函数时,可以获取本身。用于区分函数是否作为构造函数使用。

    function test() {
        console.log(new.target)
    }
    
    test(); // undefined
    new test(); // f test() {....}

    super.xxx

    super等效于this.__proto__,但是super不能单用,一定后面跟"."或者中括号,否则语法抛错。

    let a = {
        test() {
            console.log(super.name)
        }
    }
    a.__proto__ = {name:"b"}
    
    a.test(); // "b"

    函数 调用参数模板

    function test() {
        console.log(arguments)
    }
    
    test `a${1}b${2}c${3}`

  • 相关阅读:
    IOS系统input输入框为readonly时, 隐藏键盘上的上下箭头
    vue2.0做移动端开发用到的相关插件和经验总结
    安卓手机输入法挡住输入框的问题
    .NET返回上一页
    多线程编程
    多线程采集
    Delphi Base64编码_解码及ZLib压缩_解压(转)
    MySQL教程97-MySQL创建索引
    MySQL教程96-MySQL索引类型
    MySQL教程95-MySQL索引 INDEX
  • 原文地址:https://www.cnblogs.com/amiezhang/p/7395686.html
Copyright © 2011-2022 走看看