简介

作者: lesliefang | 来源:发表于2017-02-24 17:14 被阅读5次

console 中输入多行代码, shift + enter

only values has type in JS 只有值有类型,变量是没有类型的

typeof null === 'object' 历史遗留 bug

JS 数据类型

string
number
boolean
null and undefined
object
symbol (new to ES6)

Array 和 Function 其实也是 object,它们是 object 的子类型

转型

== 允许自动转型的情况下进行比较 checks for value equality with coercion allowed
=== 不允许自动转型的情况下进行比较 checks for value equality without allowing coercion

var a = 42;
var b = "foo";
a < b;      // false
a > b;      // false
a == b;     // false

如果两边有一个不是 string 或两边都不是 string, 两个值都会强转为 number 后再比较
b 转为 number 后是 NaN

Hosting 变量和函数提升
var a = 2;

foo();                  // works because `foo()`
                        // declaration is "hoisted"
function foo() {
    a = 3;

    console.log( a );   // 3

    var a;              // declaration is "hoisted"
                        // to the top of `foo()`
}
console.log( a );   // 2

Wherever a var appears inside a scope, that declaration is taken to belong to the entire scope and accessible everywhere throughout.

Strict Mode 应该始终开启
function foo() {
    "use strict";   // turn on strict mode
    a = 1;          // `var` missing, ReferenceError
}

foo();
在低版本的浏览器中使用高版本的特性2种方式
1. Polyfilling (垫片)

将高版本的特性在低版本中再实现一遍,如 ES6 中新添加了 Number.isNaN() 方法, 我们可以写一个像下面的垫片

if (!Number.isNaN) {
    Number.isNaN = function isNaN(x) {
        return x !== x;
    };
}

这样在所有浏览器中都可以使用 Number.isNaN 方法了。 一部分特性是可以通过 Polyfilling 实现的。

2. Transpiling

ES6、ES7 中新的语法无法通过 Polyfilling 部署到低版本中,这时可以通过第三方工具将 ES7、ES6 编译成 ES5 后再发布。
一般通过 Babel 或 Traceur 编译
Babel (https://babeljs.io) (formerly 6to5): Transpiles ES6+ into ES5
Traceur (https://github.com/google/traceur-compiler): Transpiles ES6, ES7, and beyond into ES5

对于 web 前端用 ES6、ES7 开发,打包时用 babel 编译回 ES5 是目前通用的做法。

新版的 Node.js 对 ES6 的支持达到了 99%, 所以 Node 是可以直接用 ES6 开发的。

相关文章

  • 18旅游二班各组自我简介汇总

    一组简介 二组简介 三组简介 四组简介 五组简介 六组简介 七组简介 八组简介

  • 简介

    上辈子,洛幽喜欢了东凡一辈子,没有结果,之后她死了,她不后悔,只是为什么她一睁眼,嗯?捏了捏自己的脸,她这是回到了...

  • 简介

    1.主动地去阅读。 2.阅读目的:获得资讯,获得理解 前者为了增进资讯,获得信息,不能增加理解力。后者为了理解更多...

  • 简介

    姓名:赵金星 电话:13903984903 坐标:河南三门峡市陕州区。 三个标签的自我介绍: 1.时间管理践行者 ...

  • 简介

    朱凝不过打错个字,便被天打雷劈回古代。 为毛别人穿个废柴嫡女,她穿个废柴庶女?地位更低了哎 哇喔,别人嫁王爷,她嫁...

  • 简介

    凌波网络考试系统,是一套运行于Windows系统之上的无纸化网络考试软件。包括试卷编辑、分发试卷、学生答卷、自动阅...

  • 简介

    名字:笨小孩 不是富二代的笨小孩为了生活选择了编程。在大多数人眼里可能感觉编程是很无聊很辛苦经常加班的事情,其实人...

  • 简介

    A Native Client web application consists of JavaScript, H...

  • 简介

    选择django作为毕设项目,和日后工作内容。故在简单得做了一个blog和毕设系统之间,想深入了解django,会...

  • 简介

    被乞丐养大的孩子,像是被贴上来了另类的标签,即使成绩优异也无人与她作伴,一头乌黑的长发,明亮却又冷漠的眼睛,本...

网友评论

      本文标题:简介

      本文链接:https://www.haomeiwen.com/subject/vbmwwttx.html