Javascript语言的设计不够严谨,很多地方一不小心就会出错。
举例来说,请考虑以下情况。
现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下:
javascript
if (myObj不存在){
声明myObj;
}
你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别。
more
第一种写法
根据直觉,你可能觉得可以这样写:
javascript
if (!myObj)
继续阅读 »
缘由
JavaScript 数组去重经常出现在前端招聘的笔试题里,比如:
有数组 var arr = ['a', 'b', 'c', '1', 0, 'c', 1, '', 1, 0],请用 JavaScript
实现去重函数 unqiue,使得 unique(arr) 返回 ['a', 'b', 'c', '1', 0, 1, '']
作为笔试题,考点有二:
正确。别小看这个考点,考虑到 JavaScript 经常要在浏览器上运行,在千姿百态的各种浏览器环境下要保障一个函数的正确性可不是一件简单的事,不信你继续读完这篇博客。
性能。虽然大部分情况下 JavaScript 语言本身(狭义范畴,不包含 DOM 等延拓)不会导
继续阅读 »
content
{:toc}
百度前端学院的第二次任务笔记,JavaScript 基础。主要有JavaScript的定义,数据类型,对象,数组,字符串,正则表达式,DOM,事件,BOM,Ajax 等知识。
任务
掌握JavaScript基础知识,能够使用JavaScript编写一些复杂度不大的交互功能。
继续阅读 »
概述
除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。
设立"严格模式"的目的,主要有以下几个:
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
消除代码运行的一些不安全之处,保证代码运行的安全;
提高编译器效率,增加运行速度;
为未来新版本的Javascript做好铺垫。
"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。
另一方面,同样的代码,在"严格模式"中,可能会有不一样的运
继续阅读 »
原文连接:Writing Fast, Memory-Efficient JavaScript
许多 JavaScript 引擎都是为了快速执行的大型 JavaScript 应用程序设计而特别设计,如 Google V8 引擎(正被 Chrome 和 NodeJS 使用)。在开发过程中,如果你关心内存使用情况和页面性能,你应该了解户浏览器的 JavaScript 引擎的内部运作原理。
无论是V8、SpiderMonkey(Firefox)、Carakan(Opera)、Chakra(IE)或其他 JavaScript 引擎,了解引擎背后的一些运行机制可以帮助你更好地优化你的应用程序。但,这并不是说应该专门为某一浏览器或引擎进行
继续阅读 »
this是Javascript语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,
javascript
function test(){
this.x = 1;
}
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
more
下面分四种情况,详细讨论this的用法。
情况一:纯粹的函数调用
这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。
请看下面这段代码,它的运行结果是1。
javascript
function test(){
this.x = 1;
alert(this.x)
继续阅读 »
前言
在经典的面相对象语言编程中,Constructor是一种在内存已分配给该对象的情况下,用于初始化新创建对象的特殊方法。在Javascript中,几乎所有东西都是对象,我们通常最感兴趣的是object构造器。
object构造器用于创建特定类型的对象——准备好对象以备使用,同时接收构造器可以使用的参数,以在第一次创建对象时,设置成员属性和方法的值。
more
基本Constructor
Javascript虽然不支持类的概念,但它确实支持与对象一起用的特殊constructor函数,通过在构造器前面加new关键字,告诉Javascript像使用构造器一样实例化一个新对象,并且对象成员由该函数定义。
在构造器内,th
继续阅读 »
content
{:toc}
本文为慕课网 JavaScript深入浅出 JavaScript 函数笔记。
概念
函数是一块JavaScript代码,被定义一次,但可执行和调用多次。
继续阅读 »
你可能知道,Javascript语言的执行环境是"单线程"(single thread)。
所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。
more
这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。
为了解决这个问题,Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)。
继续阅读 »
content
{:toc}
本文为慕课网 JavaScript深入浅出 JavaScript 面向对象笔记。
概念
面向对象程序设计(Object-oriented programming,OOP)是一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
——维基百科
继续阅读 »