JavaScript语言精粹笔记之语法和对象

本文深入探讨了JavaScript作为主流的lambda语言的核心概念与特性,包括函数基于lexical scoping、注释类型、数字类型、字符串表示、代码块作用域、对象与原型、委托机制、属性删除等关键内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在JavaScript中函数是基于lexical scoping的 顶级对象。JavaScript是第一个成为主流的lambda语言,与Lisp和Scheme有很多共同点。JavaScript语言是 ECMAScript标准第三版的一个实现。除了BNF外,Syntax diagrams(又叫 铁路图)是一种更为直观的方法。
JS中的注释有两种:/**/和//。由于/**/这些字符会出现在正则表达式中,会截断注释,所以作者不推荐这种注释方法。
JS不允许在对象字面常量或者一个属性存取表达式的点号后使用保留的关键字作为对象的属性名。
JS中只有一个单一的数字类型。它在内部被表示为64位的浮点数。
字符串字面常量可以被包围在单引号或双引号中,它可以含有0个或多个字符。JS中没有字符类型,要表示字符,只须创建仅包含一个字符的字符串即可。JS中所有的字符都是16为的Unicode字符。\是转义字符。
数字、布尔值和字符串都是不可变的
JavaScript可以通过条件语句(if和switch)、循环语句(while、for和do)、强制跳转语句(break、return和throw)和函数调用来改变执行顺序。注意, Javascript中没有continue语句
Js中的代码块儿不会创建一个新的作用域,因此变量应该被定义在函数的顶端,而不是在代码块儿中。
JS中的对象被定义为 可变的键控集合。JS中的对象是 无类别的(class-free)。它对属性的名字和值没有约束。
JS中每个对象都连接到一个原型对象,并且他可以从中继承属性。所有通过对象字面常量创建的对象都连接到Object.prototype这个Javascript中标准的对象。当创建一个新对象时,可以选择某个对象作为它的原型。原型连接在更新时是不起作用的,只在检索值的时候才被用到。也就是说当我们对某个对象做出改变时不会影响该对象的原型。当我们尝试去检索对象的某个属性值,而且该对象没有该属性名时,那么JS会试着从原型对象中获取属性值。如果那个原型对象也没有该属性,那么再从它的原型中寻找,以此类推,直到该过程到达终点Object.prototype。如果想要的属性完全不存在于属性链中,那么结果就是undefined值。这个过程称为 委托
delete运算符可以用来删除对象的属性。它将会移除对象自身包含的属性,而不会影响原型链中的任何对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值