JavaScript笔记

中途才开始做笔记。。。。

3.10变量作用域

函数中的变量都在前面进行声明,却没有赋值。同时函数中变量在整个函数域都可用。这两点与C系列语言的块级有较大区别。

作为属性的变量,在添加var进行声明赋值时,表示不可被删除的全局变量,而直接使用变量名赋值,则会自动产生一个可以被删除的全局变量。

作用域链的概念了解部分,缺乏实际例子进行讲解。作为一个疑问在后面笔记进行补充。


4表达式与运算符

4.7左值

这是一个很古老的术语了,C系列中一直都有,在这里复习一下。左值的定义是,表达式只能出现在赋值操作符的左侧。

4.9表达式

===

如果两者类型不同,则不同。如果两者都是null或者undefined,都不同。如果两者都是TRUE或者false则相等。NaN甚至都不会等于他自身,对象都不会等于自身。引用来自同一地点相等。

==

两者类型不同时,也可能会判断相等,情况如下:当null与undefined时,相等。数字与字符串,在字符串转换成数值之后进行比较。对象的话转换成原始值进行比较。

例如:"i" == true;结果相等,因为字符成数字,true转换为数字。

4.13逗号运算符

先计算左边操作数,然后再进行右操作数。


5语句

5.3声明

变量和函数声明,加了var声明的变量声明被显示提前,而定义还在原地。而函数的话,函数名称和函数体都提前。


6对象

6.3删除属性

delete只是删除属性与寄主之间的联系。

a = {p:{x : 1}}; b = a.p; delete a.p;

但b.x依旧等于1,但是既然a中没有了p,为何b.x能连接到x?原因是因为删除的是a与p的联系,但是b是等于属性p的,所以其实b是通过p访问x。


7数组

7.1数组是一种特殊的对象,[]访问元素会将其中索引转换为字符串。

数组的索引与属性不同,当[]为非负整数时,为索引,其他情况为属性。数组没有越界的概念,只会返回undefined。

 8函数

8.3方法调用

this是面对对象的核心,属于关键字,在嵌套函数中,如果嵌套函数被作为方法使用,this指向的是对象;如果作为函数使用,指向的不是全局this就是undefined。

8.4函数作为变量

其实函数名在js中就是一个变量名。可以赋给对象等等。。。。本质是一种特殊的对象,一切皆对象啊。

函数可以自定义函数属性,在函数中添加属性,保持不变。

8.5函数空间

作用和命名空间类似,只是将函数代替,用作命名空间,使用匿名函数。

8.6闭包

函数的执行依赖于变量的作用域,这个作用域是在函数定义的时候决定的,而不是在函数执行的时候决定。闭包的思想。

js实现的闭包和C语言实现的闭包不同。关系到CPU堆栈等实现。函数的作用链一般情况下在调用结束后会被释放,而包含嵌套函数的情况有点特殊,当嵌套函数没有被当做变量返回时,函数同样会被释放,因为没有引用。但如果嵌套函数被当做变量返回,外部就对嵌套函数的作用链引用,而嵌套函数作用链指向的变量绑定对象也不会被释放,所以函数也就不会被释放。感觉这样好绕啊,内存泄露会不会很恶心?


9类和模板

部分属性无法被继承,比如9-1例子中的两个属性就无法被继承。

9.2constructor属性

卧槽,没怎么看懂,留到后面。笔记还会不断补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值