即使你是一位经验丰富的Web开发人员,也可能被某个小问题而陷入几个小时的沉思
下面看一下九种常见的陷阱
1. 区分大小写
创建的所有函数和变量都是区分大小写的
也就是说function myFunction() {}和function MyFunction() {}是不一样的
2. 单引号与双引号
单引号(‘字符串’)和双引号(“字符串”)在JavaScript中没有特殊的区别,都可以用来创建字符串。但作为一般性的原则,大多数Web开发人员使用单引号
3. 换行
不论你使用哪种引号来创建字符串,字符串中间都不能包含强制换行符号:
var html = ‘<h2 class=”a”>A list!</h2>
<ol>
<li class = “a”>Foo</li>
<li class = “a”>Bar</li>
</ol>’;
如果这样做的话,会导致解析错误,因为换行符被解释为分号,如果你想告诉浏览器这是一个完整的html的话,就得通过反斜杠来转义换行符
var html = ‘<h2 class=”a”>A list!</h2>\
<ol>\
<li class = “a”>Foo</li>\
<li class = “a”>Bar</li>\
</ol>’;
如果使用第三方压缩工具来压塑代码的话,上面这种方法也是会出现问题的,我们还有另外一种方案就是使用字符串操作符(+)并将每一行用引号括起来:
var html = ‘<h2 class=”a”>A list!</h2>\
+ ‘<ol>’
+’<li class = “a”>Foo</li>’
+’<li class = “a”>Bar</li>’
+’</ol>
’;
4. 可选的分号和花括号
用分号来结束一行代码并不是必须的
alert(‘hello’)
alert(‘world’)
等同于
alert(‘hello’);
alert(‘world’);
但是如果是有逻辑关系的话,就不能这样等同了
if(a==b)
alert(‘true!’)
alert(‘false?’)
不同于
if(a==b) {
alert(‘true!’);
}
alert(‘false?’);
5. 重载(并非真正的重载)
JavaScript是不支持重载,我们这里将的更像是替换。
对于重载而言,假设有下面两个同名函数:
function myFunction(a,b) { alert(a+b);}
function myFunction(a) {alert(a);}
在程序中根据参数的不同,会调用不同的函数来处理,但这在JavaScript是能实现的,对于JavaScript,它是不会考虑函数定义时的参数的,它会直接使用作用域链中最后定义的那个函数,也就是说相同的函数永远只存在一个实例i,所以当你创建自己的函数时,确保没有覆盖掉JavaScript核心元素,除非你希望那么做,假设,我们创建了如下函数:
function alert(message) {
//LEO.$方法是我自己一个JS库中的方法
LEO.$(‘messageBox’).appendChild(document.createTextNode(message));
}
那么当调用alert时,浏览器并不会像往常那样提示一个信息,而是按照我新定义的alert函数来执行相应动作
6. 函数的调用和引用(不带括号)
var fun1 = exampleFunction();
var fun2 = exampleFunction;
发现上述的不同之处了吗?,区别在于fun2的exampleFunction没有圆括号,它对结果的影响极大,没有圆括号的话,fun2得到的是函数本身,而不是结果,我们就把fun2作为参数传递给其他方法
《AdvancED DOM Scripting Dynamic Web Design Techniques》
分享到:
相关推荐
JavaScript是一种强大的、灵活的脚本语言,但它也有一些让人头疼的语法特性。以下是一些示例题目,它们展示了JavaScript中的一些不寻常的行为。 1. `typeof arguments` 的问题: 在JavaScript中,`arguments` 是一...
3. 避免常见的编程陷阱:在本书中,作者不仅提供了理论知识,还加入了实践中的小提示,帮助读者理解在日常编程中可能遇到的问题(gotchas)。掌握这些内容可以有效避免编码过程中的常见错误。 4. 实际应用场景的...
1. **JavaScript语法特性**:书中详细介绍了JavaScript的基本语法,如变量声明(var, let, const)、数据类型(原始类型与引用类型)、作用域(全局与局部)、运算符(算术、比较、逻辑、位操作)以及流程控制语句...
JavaScript语法是学习这门语言的基础,以下将详细解释给出内容中提及的关键知识点。 首先,我们需要注意的是JavaScript区分大小写,这意味着变量名、函数名、运算符等所有的标识符都对大小写敏感。例如,变量age和...
书中会讨论这些特性的使用和潜在问题,帮助开发者避免常见的错误。 事件驱动模型是JavaScript在Web开发中的一个重要特征。通过事件监听器和事件处理器,JavaScript可以响应用户的交互,实现动态网页。书中可能会...
书中还可能涵盖了错误处理、性能优化、跨浏览器兼容性等实际开发中常见的问题,帮助读者避免常见的陷阱并提升代码质量。此外,实战示例和练习题穿插在各章节中,旨在强化理论知识,提高实际操作能力。 总之,...
首先,"JavaScript使用手册.chm" 是一份详尽的JavaScript参考文档,可能包含了JavaScript语法、内置对象、函数、DOM操作以及事件处理等内容。CHM(Compiled Help Manual)文件是微软提供的帮助文件格式,便于离线...
书中会讲解如何利用动态性提高灵活性,同时避免常见的类型陷阱。 2. **对象与原型**:JavaScript的原型继承机制是其独特之处。了解如何创建和使用原型链,以及如何有效地利用`__proto__`和`Object.create()`,可以...
通过阅读《JavaScript语言精粹》,读者不仅能掌握JavaScript的基本语法和高级特性,还能了解到最佳实践和常见陷阱,从而提升编程技能,成为一名更优秀的JavaScript开发者。书中的书签将帮助读者快速定位到重要章节,...
"JavaScript语言精粹(修订版)"是一本深入探讨JavaScript编程精髓的书籍,旨在帮助开发者掌握其核心概念、最佳实践以及常见陷阱。这本书对初学者和经验丰富的开发者都具有很高的价值,能够提升对JavaScript的理解和...
一个常见的误区认为数字字面量不是对象,这实际上是JavaScript解析器的一个设计缺陷,它尝试将点操作符视为浮点数字面量的一部分,导致`2.toString()`这样的表达式产生语法错误。然而,有多种变通方法可以使数字字面...
CommonJS、AMD和ES模块(import/export)是JavaScript中常见的模块系统,它们有助于组织和管理代码。 10. **错误处理**:良好的错误处理机制可以确保程序的健壮性。学习如何使用try/catch语句捕获和处理错误,以及...
鉴于面向对象编程在JavaScript中的实现与传统语言如Java或C++有所不同,书中可能还会介绍JavaScript特有的OOP特性,如原型继承、对象字面量、工厂模式以及后来的ES6新增的类语法等。 由于内容片段包含了版权声明和...
2. **作用域**:JavaScript 有函数作用域和块级作用域,了解如何正确管理变量的作用域,能避免很多常见的编程陷阱。 3. **原型链与继承**:JavaScript 的继承是基于原型的,理解原型对象和原型链对于实现面向对象...
在本书中,ppk以其独特的视角和丰富的经验,揭示了JavaScript在实际开发中的应用和陷阱。 首先,JavaScript是一种广泛应用于Web开发的脚本语言,它的主要用途是使网页具有交互性。JavaScript可以操作DOM(文档对象...
### JavaScript Garden:深入探讨JavaScript中的陷阱与注意事项 #### 引言 《JavaScript Garden》是一份不断更新、详尽记录了JavaScript编程语言中最易犯错误、陷阱及细微问题的指南。该文档不仅帮助开发者规避常见...
书中讲解了JavaScript的五种基本类型(Undefined、Null、Boolean、Number、String)以及复杂类型(Object),并讨论了类型转换的陷阱和应对策略。 对于异步操作,作者详细解读了回调函数、Promise和async/await,...
Crockford讲解了如何利用这一机制实现面向对象编程,同时避免常见的陷阱。 5. **数组**:书中讨论了JavaScript数组的各种操作技巧,如遍历、索引、扩展等,并提供了优化数组处理的方法。 6. **正则表达式**:...
《JavaScript the Good Parts》是著名的计算机科学家Douglas Crockford所著的一本书,它深入探讨了JavaScript编程语言中最有价值、最稳定的部分,旨在帮助开发者避开语言中的陷阱,充分利用其优势。这本书对于理解和...