零散的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.
零散的JS和node.js小知识的更多相关文章
- .NET程序员也学Node.js——初识Node.js
清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...
- 如何在vscode里面调试js和node.js
一般大家调试都是在浏览器端调试js的,不过有些时候也想和后台一样在代码工具里面调试js或者node.js,下面介绍下怎样在vscode里面走断点. 1,用来调试js 一:在左侧扩展中搜索Debugge ...
- Angular、React.js 和Node.js到底选谁?
为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...
- 极简 Node.js 入门 - Node.js 是什么、性能有优势?
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- Node.js入门-Node.js 介绍
Node.js 是什么 Node.js 不是一种独立的语言,与 PHP,Python 等"既是语言优势平台"不同,它也不是一个 JavaScrip 框架,不同于 CakePHP,D ...
- KoaHub.JS用于Node.js的cron作业调度程序代码
node-schedule A cron-like and not-cron-like job scheduler for Node. Node Schedule Announcement: ...
- KoaHub.JS用于Node.js的可移植Unix shell命令程序代码
shelljs Portable Unix shell commands for Node.js ShellJS - Unix shell commands for Node.js Shell ...
- 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 ...
- KoaHub.JS基于Node.js开发的Koa 生成验证码插件代
ccap node.js generate captcha using c++ library CImg without install any other lib or software node- ...
- 浏览器中的 JS 和 Node.js 中的 JS
一个是前端技术,一个是后端技术 浏览器中的 JavaScript ECMAScript 语言基础,如语法.数据类型结构.一些内置对象 BOM(Browser Object Model) 一些操作页 ...
随机推荐
- ffmpeg处理rtmp/文件/rtsp的推流和拉流
ffmpeg处理rtmp/文件/rtsp的推流和拉流 本demo演示了利用ffmpeg从服务器拉流或本地文件读取流,更改流url或文件类型名称发送回服务器或存到本地的作用. 由于本程序只写了3个小 ...
- [Luogu3960][NOIP2017]列队
luogu sol 震惊!\(NOIP\)居然也出数据结构! 话说回来,其实只需要对每一行的前\(m-1\)个人维护一个数据结构,然后对最后一列的\(m\)个人也维护一个数据结构就好了.具体的话写平衡 ...
- Oracle 12C 新特性之在线重命名、迁移活跃的数据文件
Oracle 数据库 12c 版本中对数据文件的迁移或重命名不再需要太多繁琐的步骤,可以使用 ALTER DATABASE MOVE DATAFILE 这样的 SQL 语句对数据文件进行在线重命名和移 ...
- linux日常管理-rsync_ssh方式
现在我们有两台机器,两台机器都需要安装rsync yum -y install rsync 一台的主机名是wangshaojun IP是192.168.1.117 ,另一台的主机名是 ...
- C# 删除文件和目录到回收站
if (Directory.GetDirectories(projectPath).Length == 0 && Directory.GetFiles(projectPath).Len ...
- [51nod1247]可能的路径(思维题)
题意:给定(a,b),(x,y) ,(a,b)可以通向(a-b,b) (a+b,b) (a,a+b) (a,a-b) 求能否到达(x,y) 解题关键:类似于更相减损,变换过程中gcd是一样的. #i ...
- maven 打JAR包资源文件指定路径与文件读取
1.配置RESOURCES节点 有时会遇到maven打包后找不到资源文件了,其实这时候路径发生了变化,为了确保打包后路径不发生变化,指定一个固定的路径,请看下面配置 <build> ... ...
- mac下已装virtualbox运行genymotion还报错找不到虚拟机的解决办法
sudo ln -s /usr/local/bin/VBoxManage /usr/bin/VBoxManage
- cocos2dx之lua绑定简析
一.总原则:c++对象的生命期不依赖lua gc管理,手动创建的对象要手动销毁 二.引擎层在设计上就是支持脚本概念的(也就是说脚本的使用是“侵入式”的),与lua打交道的代码都封在CCLuaEngin ...
- 1、Question: prep_reads.info vs. align_summary.txt
###参考:https://www.biostars.org/p/163356/ used TopHat to map my reads against their relative referenc ...