这里有一些宝石:
文字:
var obj = {}; // Object literal, equivalent to var obj = new Object(); var arr = []; // Array literal, equivalent to var arr = new Array(); var regex = /something/; // Regular expression literal, equivalent to var regex = new RegExp('something');
默认值:
arg = arg || 'default'; // if arg evaluates to false, use 'default', which is the same as: arg = !!arg ? arg : 'default';
当然我们知道匿名函数,但能够将它们视为文字并在现场执行它们(作为闭包)很棒:
(function() { ... })(); // Creates an anonymous function and executes it
问题: javascript中有哪些其他优秀的语法糖?
获取当前日期时间为毫秒:
Date.now()
例如,要为执行一段代码计时:
var start = Date.now(); // some code alert((Date.now() - start) + " ms elapsed");
对象成员测试:
var props = { a: 1, b: 2 }; ("a" in props) // true ("b" in props) // true ("c" in props) // false
在Mozilla(以及据称IE7)中,您可以使用以下命令创建XML常量:
var xml =;
您也可以替换变量:
var elem = "html"; var text = "Some text"; var xml = <{elem}>{text}{elem}>;
使用匿名函数和闭包来创建私有变量(信息隐藏)和相关的get/set方法:
var getter, setter; (function() { var _privateVar=123; getter = function() { return _privateVar; }; setter = function(v) { _privateVar = v; }; })()
能够通过原型继承扩展本机JavaScript类型.
String.prototype.isNullOrEmpty = function(input) { return input === null || input.length === 0; }
使用===
比较值和类型:
var i = 0; var s = "0"; if (i == s) // true if (i === s) // false
多行字符串:
var str = "This is \ all one \ string.";
由于您不能在不将空格添加到字符串中的情况下缩进后续行,因此人们通常更喜欢使用plus运算符进行连接.但这确实提供了一个很好的文档功能.
调整数组长度的大小
length属性不是只读的.您可以使用它来增加或减少数组的大小.
var myArray = [1,2,3]; myArray.length // 3 elements. myArray.length = 2; //Deletes the last element. myArray.length = 20 // Adds 18 elements to the array; the elements have the empty value. A sparse array.
通过在空数组上利用join方法,重复一个字符串,如" - "特定次数:
var s = new Array(repeat+1).join("-");
当重复== 3时,结果为"---".
与默认运算符一样,||
是守护运算符&&
.
answer = obj && obj.property
而不是
if (obj) { answer = obj.property; } else { answer = null; }
var tags = { name: "Jack", location: "USA" }; "Name: {name}
From {location}".replace(/\{(.*?)\}/gim, function(all, match){ return tags[match]; });
字符串替换的回调非常有用.
吸气剂和二传手:
function Foo(bar) { this._bar = bar; } Foo.prototype = { get bar() { return this._bar; }, set bar(bar) { this._bar = bar.toUpperCase(); } };
给我们:
>>> var myFoo = new Foo("bar"); >>> myFoo.bar "BAR" >>> myFoo.bar = "Baz"; >>> myFoo.bar "BAZ"
这不是一个javascript独占,但保存像三行代码:
check ? value1 : value2