当前位置:  开发笔记 > 编程语言 > 正文

最好的javascript语法糖

如何解决《最好的javascript语法糖》经验,为你挑选了13个好方法。

这里有一些宝石:

文字:

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中有哪些其他优秀的语法糖?



1> Chris Noe..:

获取当前日期时间为毫秒:

Date.now()

例如,要为执行一段代码计时:

var start = Date.now();
// some code
alert((Date.now() - start) + " ms elapsed");


你不需要+,没有它就可以正常工作.
你不需要`()`:)
OrbMan,这可能取决于背景; 如果将它作为参数传递,它可能被强制转换为Object而不是强制转换为Number或String,在这种情况下,+已经将它强制转换为Number.实际上,+似乎是parseInt(value,10)的简写.

2> Chris Noe..:

对象成员测试:

var props = { a: 1, b: 2 };

("a" in props) // true
("b" in props) // true
("c" in props) // false


即使props = {a:undefined}也是如此.

3> Chris Noe..:

在Mozilla(以及据称IE7)中,您可以使用以下命令创建XML常量:

var xml = ;

您也可以替换变量:

var elem = "html";
var text = "Some text";
var xml = <{elem}>{text};


由于跨站点脚本包含攻击,E4X文字是一种安全灾难,并且真的没有明显好于只能说"var xml = new XML(' ')"IMO.
@CharlieSomerville这不是风险.E4X可能将'安全'[X] [HT] ML文件转换为活动JS.有关此问题的背景信息,请参阅http://code.google.com/p/doctype/wiki/ArticleE4XSecurity.

4> Ash..:

使用匿名函数和闭包来创建私有变量(信息隐藏)和相关的get/set方法:

var getter, setter;

(function()
{
   var _privateVar=123;
   getter = function() { return _privateVar; };
   setter = function(v) { _privateVar = v; };
})()



5> steve_c..:

能够通过原型继承扩展本机JavaScript类型.

String.prototype.isNullOrEmpty = function(input) {
    return input === null || input.length === 0;
}


只是避免对阵列这样做:http://stackoverflow.com/questions/61088/hidden-features-of-javascript#118556

6> Chris Noe..:

使用===比较值类型:

var i = 0;
var s = "0";

if (i == s)  // true

if (i === s) // false



7> Chris Noe..:

多行字符串:

var str = "This is \
all one \
string.";

由于您不能在不将空格添加到字符串中的情况下缩进后续行,因此人们通常更喜欢使用plus运算符进行连接.但这确实提供了一个很好的文档功能.


公平警告 - 如果在\之后有任何尾随空格,则会抛出异常.

8> pramodc84..:

调整数组长度的大小

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.


实际上,使用这种方式创建的元素实际上并不存在(它们也没有未定义的值,但访问它们将使您未定义).您也无法使用for..in迭代它们.

9> J c..:

通过在空数组上利用join方法,重复一个字符串,如" - "特定次数:

var s = new Array(repeat+1).join("-");

当重复== 3时,结果为"---".



10> Skilldrick..:

与默认运算符一样,||是守护运算符&&.

answer = obj && obj.property

而不是

if (obj) {
    answer = obj.property;
}
else {
    answer = null;
}



11> Serkan Yerse..:
var tags = {
    name: "Jack",
    location: "USA"
};

"Name: {name}
From {location}".replace(/\{(.*?)\}/gim, function(all, match){ return tags[match]; });

字符串替换的回调非常有用.



12> Jonny Buchan..:

吸气剂和二传手:

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"


不能等到这是普遍可用的.

13> levik..:

这不是一个javascript独占,但保存像三行代码:

check ? value1 : value2

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有