JavaScript入门
目录
JavaScript入门
继续前进!
1. JS的诞生
阮一峰:1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。因此,网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。工程师Brendan Eich负责开发这种新语言。
恰逢Sun公司主推Java(Write Once, Run Anywhere),两家组成联盟,网景让Java以applet形式入驻浏览器,自己则设计一种语言,蹭Java热点,作者本人其实看不起Java,并且主要研究函数式编程,仅仅10天时间,JS诞生了,Javascript语言实际上是两种语言风格的混合产物,函数式编程+面向对象编程,因为太过仓促,作者甚至称其为 “C语言和Self语言一夜情的产物”
2. JS 的 Prototype
JavaScript受当时面向对象浪潮的因共享(Java和C++),把数据分成基本类型(primitive)和对象类型(object)两种,而对象间需要产生联系,即数据共享,来节省资源,减少冗余,并且方便修改。使用类的设计的话,JS就是完整的面向对象编程语言了,增加了入门难度。
因此综合考虑,最后有了这两个设计
- 面向对象的简化:没有类,而只有构造函数
- 对象间产生联系:为构造函数设置prototype属性
3. JS 的设计缺陷
以我目前的接触
- == 与 ===
- null 和 undefined
- 基本类型的包装对象:字符串、数字和布尔值 vs 字符串对象、数字对象和布尔值对象
4. JS 基本语法tips
标示符、关键字、注释,都基本和C++一致,只列举一些面试会出的坑。
4.1. && 和 ||
|| 不是返回bool值,而是返回第一个不为0的值,或者最后一个元素的值,&&同理
let a = false
> undefined
a || 5
> 5
5 || a
> 5
0 || a
> false
4.2. fn && fn()
先判断是否有fn,再对fn的返回值进行判断
4.3. label
这是一个label,但chrome会优化成对象
{
foo: 1
}
4.4. setTimeout
let a = 1
> 1
if(a===1){
setTimeout(()=>{console.log(a)})
a=2
}
> 2
最近进展还可以,这周主要时间要去研究4篇GAN,并且复现,然后做实验,改论文。然后继续锻炼,休息看看设计模式,目前就这么安排~加油~