zoukankan      html  css  js  c++  java
  • 零散的JS和node.js小知识

    JS的连续赋值和曾经出现的怪异情况

    let a=1;
    let b=a=3;
    

    如上的真实赋值过程 => a=1 => a=3 => b=3 => 一般来说,等号是从右向左赋值的

    于是问题来了

    var a={n:1};
    var b=a;
    a.x=a={n:2};
    console.log(a)  // {n:2}
    console.log(b)  // {n:1,x:{n:2}}
    console.log(a.x) // undefined
    console.log(b.x) // {n:2}
    

    a={n:1} => b={n:1} =>
    在JS中,若是'.'和'='同时还出现,先进行'.'操作
    于是乎,没有先执行右边的赋值,而是先执行了给 a 增加 x 属性这一操作
    => a.x={n:2} 在这里的时候a={n:1,x:{n:2}} =>
    这时候 a指向了 {n:2} ,a变了,a被重新复制了,天地变化。
    (因为这里a变成了{n:2}所以结局问a.x是没有这个属性的)
    => 由于b一直都是a的镜子,跟随着a的变化,直到a不再指向那个地址

    参考文章:http://www.jb51.net/article/118168.htm


    0.1+0.2=0.3???错!!它会等于 0.3000000000000004 (大概这么多0,因为小小的摄入误差) 这并非只是ES一家错误。 但是 0.15+0.25等其他的是正确的。

    a=0.1;
    b=0.2;
    console.log(a+b);  // 0.30000000000004
    

    NaN存在的意义?

    在其他编程语言中,任何数值除以非数值都会导致错误,从而导致代码停止执行,而在ES中,任何数值除以非数值会返回NaN,因为不会导致代码停止。

    a=0.1;
    b=0.2;
    console.log(a/'hhh');  // NaN
    

    获取成员属性应该用'.'还是用[]

    这个见仁见智,具体细节曾经百度过但是现在已经淡忘,只记得速度差异忽略不计
    不过用.有一个好处,那就是更加紧凑而且可读性比较好


    ||&&的妙用

    在对象中,运算符 || 可以用来填充默认值: let height= variable || 100
    在对象中,运算符 && 可以帮我们来规避 undefined 出的异常(因为冲undefined中取值会报异常) : let height= obj && obj.length


    JS基础知识之 addEventListener

    该方法用于给我们选取的元素添加各种 dom 相关的事件。诸如 onclick,onmousemove 等。

    需要注意的地方,该方法格式中不需要加 on,以下为具体案例

    	div1.addEventListener('click',function(event){
    		console.log("A");
    	});
    

    但是我想说的其实是,关于它的其他参数
    它有三个参数,分别是: 1.事件名称、种类 2.定义的回调函数 3.事件是否在捕获阶段,冒泡阶段执行
    关于第三个参数,它是一个 bool 值。

    true - 事件句柄在捕获阶段执行
    false- false- 默认。事件句柄在冒泡阶段执行

    关于事件的几个阶段:http://blog.csdn.net/jquery_qq/article/details/51448842

    一直没有怎么注意效率和写法,最近做了个react-todo2.0发现优化的地方太多了,看见redux官网的todo-list更觉写法简明,于是最近都特别在意代码风格。

    代码比较1:

                contents = JSON.parse(contents);
                this.props.initTodos(contents);
    


    this.props.initTodos(JSON.parse(contents))
    哪一种写法更高效?

    setInterval的初始值从1开始。 比如 const a = setInterval(()=>{}, 3000) ,这里的a值为1.

  • 相关阅读:
    HDU 1525
    kmp模板
    hdu 4616 Game(树形DP)
    hdu 4619 Warm up 2(并查集活用)
    hdu 4614 Vases and Flowers(线段树加二分查找)
    Codeforces 400D Dima and Bacteria(并查集最短路)
    poj 2823 Sliding Window (单调队列)
    hdu 2196 Computer(树形dp)
    hdu 4604 Deque
    最短路径
  • 原文地址:https://www.cnblogs.com/can-i-do/p/7249931.html
Copyright © 2011-2022 走看看