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.

最新文章

  1. c#线程带参数
  2. ci框架登陆之后每隔几分钟就需要重新登录的问题
  3. Winpcap安装,Cannot open include file 'pcap.h'
  4. Python下安装MySQLdb
  5. Entity FrameWork知识点汇总
  6. 当分页语句遇到union all
  7. Entity Framework With Mysql 之Code First
  8. 找工作笔试面试那些事儿(10)---SQL语句总结
  9. IOS网络请求之NSURLSession使用
  10. poj3261 Milk Patterns 后缀数组求可重叠的k次最长重复子串
  11. VS 2017开发插件
  12. python hashlib模块 md5加密 sha256加密 sha1加密 sha512加密 sha384加密 MD5加盐
  13. Babel 配置选项
  14. SQL Server Browser探究
  15. LOJ #559. 「LibreOJ Round #9」ZQC 的迷宫
  16. Xcode6: CocoaPods 错误 target overrides the `OTHER_LDFLAGS`...
  17. 精通Web Analytics 2.0 (13) 第十一章:变身分析忍者的指导原则
  18. 方格填数-2015决赛C语言A组第一题
  19. 这些HTML、CSS知识点,面试和平时开发都需要 No5-No7(知识点:文字设置、设置背景、数据列表)
  20. TCP和UDP Client 代码

热门文章

  1. 图的Tarjan算法
  2. ACM学习历程—HDU5585 Numbers(数论 || 大数)(BestCoder Round #64 (div.2) 1001)
  3. bzoj 4540: [Hnoi2016]序列 莫队
  4. RabbitMQ队列,Redis\Memcached缓存
  5. DDoS攻防战(二):CC攻击工具实现与防御理论--删除
  6. ETL之Tungsten Replicator
  7. css基础知识二
  8. Less:Less(CSS预处理语言)
  9. uva 512
  10. 请问两个div之间的上下距离怎么设置