为JavaScript设计一个指数操作(运算)符 在本文中,我将探讨如何为JavaScript设计一个新的幂运算符,我已经在提交了TC39的审议,并考虑加入ES7的语法规范。
在许多编程语言中,幂通过一个
算术运算符来表达; 最常见的为x** y(Python和F#,Ruby,Perl等等),或 X^Y(BASIC,Lua中,MATLAB,R等)。其他语言包括JavaScript和C#依靠内置对象提供的一个函数来实现:Math.pow 和 Math.Pow。
在JavaScript中通过一个特定的符号实现一个求幂运算,这是有道理的,这将更加有利于这种语言的教学和学习,因为它更加符合现代人的思维习惯。从上段所描述的两种设计中,我选择了**的形式,因为字符^已经被JavaScript用在
按位异或运算中。该**形式可以更好的兼容复合赋值运算格式:**=,而且这种语义等价于内置函数Math.pow
JavaScript中的继承,构造函数以及new关键字的作用 通常一个构造函数是这样子的,它带有一个area的原型方法,在构造函数中传入长、宽并计算面积。
var Shape = function(width, height) {
this.width = width;
this.height = height;
};
Shape.prototype.area = function() {
return this.width * this.height
};
var shape = new Shape(20, 30);
shape.area();
> 600
输出很完美,这也是经典JavaScript实现继承的方法,通过prototype添加对另外一个对象的引用。
不过一部分JavaScript程序是非常讨厌new关键字的,这个关键字有太浓烈的Java烙印了,而且掩盖了JavaScript基于原型的本质,降低了程序员使用JS语言的效率,因此你想把它省了,看看结果?
JavaScript:世界上误解最深的语言 JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫
ECMAScript,是世界上最流行的编程语言之一。事实上世界上的每一台个人电脑都安装并在频繁使用至少一个JavaScript解释器。
JavaScript的流行完全是由于他在WWW脚本语言领域中的地位决定的。
尽管它很流行,但是很少有人知道JavaScript是一个非常棒的动态面向对象通用编程语言。这居然能成为一个秘密!这门语言为什么被误解如此之深?
JavaScript最大堆栈的数量 你对JavaScript引擎能进行多少次递归调用好奇吗?下面的函数可以让你找到答案:
function computeMaxCallStackSize() {
try {
return 1 + computeMaxCallStackSize();
} catch (e) {
return 1;
}
}
7个步骤:让JavaScript变得更好 随着浏览器性能提高,伴随着新的HTML5的编程接口的稳步采用,网页上的JavaScript的音量在逐渐增加。然而,一个写得不好的程序编码却拥有着打破整个网站,让用户为之沮丧和驱赶潜在客户的潜力。您只要按照这七个步骤操作就会大大提高您的JavaScript项目的质量。使用这个工作流程,错误将会减少并且将很多处理优化,让用户拥有一个愉悦的上网浏览体验。
在JavaScript数组中找到最小元素的位置 注* 之前有篇文章介绍过数据遍历的性能比较: for in 比for loop慢至少20倍 ,这是另外一篇比较数组查找性能的例子,通过对手工/indexOf/reduce三者的比较,再次映证,内置函数不一下比手工写的函数快。
给定一个非空的JavaScript数字数组,找到最小值的索引。
在JavaScript中创建命名空间的几种写法 在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子:
var sayHello = function() {
return 'Hello var';
};
function sayHello(name) {
return 'Hello function';
};
sayHello();
在JavaScript中判断整型的N种方法 整数类型(Integer)在JavaScript经常会导致一些奇怪的问题。在ECMAScript的规范中,他们只存在于概念中:所有的数字都是浮点数,并且整数只是没有一组没有小数的数字。
在这篇博客中,我会解释如何去检查某个值是否为整型。
JavaScript中NaN的秘密 NaN,不是一个数字,是一种特殊的值来代表不可表示的值,使用typeof或其他任何与之比较的处理方式,‘NaN’则会引起一些混乱,一些操作会导致NaN值的产生。这里有些例子:
Math.sqrt(-2)
Math.log(-1)
0/0
parseFloat('foo')
jQuery:在一个回调中处理多个请求 我曾经为Mozilla Developer Network 开发一个新功能,它需要加载一个基本的脚本文件的同时加载一个JSON请求。因为我们使用的是jQuery,意味着要使用 jQuery.getScript和jQuery.getJSON。我知道这两者都是异步的并返回一个Deferred(jQuery中的Promise模式实现, 参见: deffered object)对象,因此我想知道能不能在一个回调里按顺序请求它们。我很幸运,使用jQuery就可以用一个回调处理两个请求。