JavaScript入门啦

2018-04-17 (更新于2021-10-10) / JavaScript / #编程语言

参考资料: ECMAScript 6 入门: http://es6.ruanyifeng.com/

以下所有代码示例均为在nodejs交互模式下进行的,环境:Linux

// 注释

/*
注释
*/
== // 会自动转换数据类型再比较,很多时候会得到非常诡异的结果

=== // 不会自动转换数据类型,如果数据类型不一致,直接返回false,一致的话再比较
> null == 0
false
> null === 0
false
> null == ''
false
> null === ''
false
> null == null
true
> null === null
true
> 0 == ''
true
> 0 === ''
false
> undefined === undefined
true
> i = 1
1
> typeof(i)
'number'

> i = "imlk"
'imlk'
> typeof(i)
'string'

> i = true
true
> typeof(i)
'boolean'

> typeof(this)
'object'

> i = function(){
... this.console.log("imlk");
... }
[Function: i]
> typeof(i)
'function'
> i = function(e){
... console.log(e)
... }
[Function: i]
> i
[Function: i]
> i.toString()
'function (e){\nconsole.log(e)\n}'
> function f1(){};
undefined
> var f2 = function(){};
undefined
> var f3 = new Function('str','console.log(str)');//anonymous匿名函数
undefined

> f1
[Function: f1]
> f2
[Function: f2]
> f3
[Function: anonymous]

> f1.toString()
'function f1(){}'
> f2.toString()
'function (){}'
> f3.toString()
'function anonymous(str\n/*``*/) {\nconsole.log(str)\n}'

> f1.name
'f1'
> f2.name
'f2'
> f3.name
'anonymous'

> f1.prototype
f1 {}
> f2.prototype
f2 {}
> f3.prototype
anonymous {}
> b = new Boolean(true)
[Boolean: true]
> typeof b
'object'
> b.valueOf()
true
> typeof b.valueOf()
'boolean'

> s = new String('imlk')
[String: 'imlk']
> typeof s
'object'
> s.valueOf()
'imlk'
> typeof s.valueOf()
'string'

> n = new Number(2333)
[Number: 2333]
> typeof n
'object'
> n.valueOf()
2333
> typeof n.valueOf()
'number'
......
> a = 1;
1
> b = new Object(a)
[Number: 1]
> a == b
true
> a === b
false
> b = {'one': 'emmm','t':23333}
{ one: 'emmm', t: 23333 }
> for (var key in b){
... console.log(key);
... console.log(b[key]);
... }
one
emmm
t
23333
undefined
> f1 = function(e){
... console.log(typeof arguments);
... console.log(arguments.length);
... console.log(arguments);
... }
[Function: f1]
> f1(1,2);
object
2
{ '0': 1, '1': 2 }
undefined
> c = new f1(1,2);
object
2
{ '0': 1, '1': 2 }
f1 {}
> c.constructor
[Function: f1]
> c.constructor === f1
true
> c instanceof f1
true
module.exports 初始值为一个空对象 {}
exports 是指向的 module.exports 的引用
require() 返回的是 module.exports 而不是 exports
const { PI } = Math;
实际上是语法糖,等价于:
const PI = Math.PI 
(function(exports, require, module, __filename, __dirname) {
// 模块的代码实际上在这里
});
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;