JS教程—容易忽略的概念

1、表达式语句 

 

2、小括号的作用:http://www.voycn.com/article/jszhongxiaokuohaodeyongfazongjie  或  http://www.360doc.com/content/18/0224/11/31710407_732033425.shtml

  • 强制表达式运算

    函数立即执行

    (function(){  
    // ...  
    })();

    先声明后赋值的解构赋值

    let x;
    {x}={x:1,y:1} // 报错 主要还是大括号的原因,js在行首遇到{}会把它当做代码块执行,所以会报错.
    ({x}={x:1,y:1})  // 这里小括号的作用,就是告诉程序。里面是一个表达式处理,而不是一个的代码块。当然首先 里面本身就是可以作为表达式处理才可以。

    如果里面无法进行表达式处理就会报错。 let { x } = {x: 1},中 { x } = {x: 1} 本身就是一个合法表达式。只是在没有 let 情况,js把{ }里面的代码解析成语句了。
    所以用(),显示说明是一个表达式就好不会报错了。

    说明下:表达式本身就是具有返回值。所以使用(),强制表达式运算,运算后还是有返回值,这个是没有改变的。

3、大括号的作用:

 

4、null和undefined的区别:http://t.zoukankan.com/Renyi-Fan-p-13969705.html  或 https://juejin.cn/post/6844903574242066440

  java中只要声明了原生类型,默认就会给一个初始值的;而声明一个包装类型时,默认给的值就是null。
  JavaScript 是动态类型,声明一个变量 不赋值时,根本无法给他默认值。而null是表示“无”的对象,不适合原始值,所以创造了一个undefined。

  JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

  但是,上面这样的区分,在实践中很快就被证明不可行。目前,null和undefined基本是同义的,只有一些细微的差别。

  下面总结下,个人在实践中对他们的总结:

  • null:表示一个 空对象的 值,本质上他还是一个特殊值
  • undefind:表示"缺少值",就是此处应该有一个值,但是还没有定义。即 事实上 没有这个值
                     所以对象在JSON序列化时,会忽略掉undefined的属性。因为undefined值就是告诉程序没有这个属性。
posted @ 2018-04-24 12:40  吴飞ff  阅读(204)  评论(0编辑  收藏  举报