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.

零散的JS和node.js小知识的更多相关文章

  1. .NET程序员也学Node.js——初识Node.js

    清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...

  2. 如何在vscode里面调试js和node.js

    一般大家调试都是在浏览器端调试js的,不过有些时候也想和后台一样在代码工具里面调试js或者node.js,下面介绍下怎样在vscode里面走断点. 1,用来调试js 一:在左侧扩展中搜索Debugge ...

  3. Angular、React.js 和Node.js到底选谁?

    为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...

  4. 极简 Node.js 入门 - Node.js 是什么、性能有优势?

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  5. Node.js入门-Node.js 介绍

    Node.js 是什么 Node.js 不是一种独立的语言,与 PHP,Python 等"既是语言优势平台"不同,它也不是一个 JavaScrip 框架,不同于 CakePHP,D ...

  6. KoaHub.JS用于Node.js的cron作业调度程序代码

    node-schedule A cron-like and not-cron-like job scheduler for Node. Node Schedule     Announcement:  ...

  7. KoaHub.JS用于Node.js的可移植Unix shell命令程序代码

    shelljs Portable Unix shell commands for Node.js ShellJS - Unix shell commands for Node.js     Shell ...

  8. KoaHub.JS基于Node.js开发的mysql的node.js驱动程序代码

    mysql A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 10 ...

  9. KoaHub.JS基于Node.js开发的Koa 生成验证码插件代

    ccap node.js generate captcha using c++ library CImg without install any other lib or software node- ...

  10. 浏览器中的 JS 和 Node.js 中的 JS

    一个是前端技术,一个是后端技术 浏览器中的 JavaScript ECMAScript  语言基础,如语法.数据类型结构.一些内置对象 BOM(Browser Object Model)  一些操作页 ...

随机推荐

  1. 流媒体直播服务器:Bull-Live-Server

    Bull Live Server 简称 BLS ,旨在使用C++语言提供强大功能和高性能的流媒体直播服务器. 为何要写 BLS ? 1.simple rtmp server https://githu ...

  2. YARN指令

    如果是使用了Cloudera来安装到此路径下: /opt/cloudera/parcels/CDH-5.10.2-1.cdh5.10.2.p0.5/bin 执行: sudo ./yarn applic ...

  3. jQuery常用ajax操作

    在做asp.net项目的时候经常会用到ajax操作,现总结常用的ajax操作供平时项目中参考 第一种: 前端代码: <script type="text/javascript" ...

  4. Poj1258_Agri-Net(最小生成树)

    一.Description(poj1258) Farmer John has been elected mayor of his town! One of his campaign promises ...

  5. Vijos:P1098合唱队形

    描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…, ...

  6. 【转】Pro Android学习笔记(十三):用户界面和控制(1):UI开发

    目录(?)[-] UI开发 方式一通过XML文件 方式二通过代码 方式三XML代码 UI开发 先理清一些UI概念: view.widget.control:这三个名词其实没有什么区别,都是一个UI元素 ...

  7. 二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历

    二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值:若它的右子树不空,则右子树上所有结点的值均大于它的根 ...

  8. Ajax前端调后台方法

    后台对当前页面类进行注册 Ajax.Utility.RegisterTypeForAjax(typeof(Login));//Login 当前类名 在方法上面加 [Ajax.AjaxMethod(Aj ...

  9. 3. Shodan新手入坑指南

    什么是 Shodan? 首先,Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎不同,Shodan 是用来搜索网络空间中在线设备的,你可以通过 Shodan 搜索指定的设备,或 ...

  10. 1.sql注入原理

    一.什么是sql注入呢?         所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露V ...