你可能不知道的10个JavaScript小技巧

1.变量转换

1. var myVar = "3.14159",
2. str = ""+ myVar,// to string
3. int = ~~myVar, // to integer
4. float = 1*myVar, // to float
5. bool = !!myVar, /* to boolean - any string with length
6. and any number except 0 are true */
7. array = [myVar]; // to array

2.十进制转换为十六进制或者八进制，或者反过来

1. (int).toString(16); // converts int to hex, eg 12 => "C"
2. (int).toString(8); // converts int to octal, eg. 12 => "14"
3. parseInt(string,16) // converts hex to int, eg. "FF" => 255
4. parseInt(string,8) // converts octal to int, eg. "20" => 16

3.玩转数字

1. 0xFF; // Hex declaration, returns 255
2. 020; // Octal declaration, returns 16
3. 1e3; // Exponential, same as 1 * Math.pow(10,3), returns 1000
4. (1000).toExponential(); // Opposite with previous, returns 1e3
5. (3.1415).toFixed(3); // Rounding the number, returns "3.142"

4.Javascript版本检测

1. var JS_ver = [];
2. (Number.prototype.toFixed)?JS_ver.push("1.5"):false;
3. ([].indexOf && [].forEach)?JS_ver.push("1.6"):false;
4. ((function(){try {[a,b] = [0,1];return true;}catch(ex) {return false;}})())?JS_ver.push("1.7"):false;
5. ([].reduce && [].reduceRight && JSON)?JS_ver.push("1.8"):false;
6. ("".trimLeft)?JS_ver.push("1.8.1"):false;
7. JS_ver.supports = function()
8. {
9. if (arguments[0])
10. return (!!~this.join().indexOf(arguments[0] +",") +",");
11. else
12. return (this[this.length-1]);
13. }
14. alert("Latest Javascript version supported: "+ JS_ver.supports());
15. alert("Support for version 1.7 : "+ JS_ver.supports("1.7"));

5.使用window.name进行简单会话处理

6.判断属性是否存在

1. // BAD: This will cause an error in code when foo is undefined
2. if (foo) {
3. doSomething();
4. }
5. // GOOD: This doesn't cause any errors. However, even when
6. // foo is set to NULL or false, the condition validates as true
7. if (typeof foo != "undefined") {
8. doSomething();
9. }
10. // BETTER: This doesn't cause any errors and in addition
11. // values NULL or false won't validate as true
12. if (window.foo) {
13. doSomething();
14. }

1. // UGLY: we have to proof existence of every
2. // object before we can be sure property actually exists
3. if (window.oFoo && oFoo.oBar && oFoo.oBar.baz) {
4. doSomething();
5. }

7.给函数传递参数

1. function doSomething(arg0, arg1, arg2, arg3, arg4) {
2. ...
3. }
4. doSomething('', 'foo', 5, [], false);

1. function doSomething() {
2. // Leaves the function if nothing is passed
3. if (!arguments[0]) {
4. return false;
5. }
6. var oArgs = arguments[0]
7. arg0 = oArgs.arg0 || "",
8. arg1 = oArgs.arg1 || "",
9. arg2 = oArgs.arg2 || 0,
10. arg3 = oArgs.arg3 || [],
11. arg4 = oArgs.arg4 || false;
12. }
13. doSomething({
14. arg1 : "foo",
15. arg2 : 5,
16. arg4 : false
17. });

8.使用document.createDocumentFragment()

1. function doSomething(arg0, arg1, arg2, arg3, arg4) {
2. ...
3. }
4. doSomething('', 'foo', 5, [], false);

1. function createList() {
2. var aLI = ["first item", "second item", "third item","fourth item", "fith item"];
3. // Creates the fragment
4. var oFrag = document.createDocumentFragment();
5. while (aLI.length) {
6. var oLI = document.createElement("li");
7. // Removes the first item from array and appends it
8. // as a text node to LI element
9. oLI.appendChild(document.createTextNode(aLI.shift()));
10. oFrag.appendChild(oLI);
11. }
12. document.getElementById('myUL').appendChild(oFrag);
13. }

9.为replace()方法传递一个函数

1. var sFlop = "Flop: [Ah] [Ks] [7c]";
2. var aValues = {"A":"Ace","K":"King",7:"Seven"};
4. sFlop = sFlop.replace(/$\w+$/gi, function(match) {
5. match = match.replace(match[2], aSuits[match[2]]);
6. match = match.replace(match[1], aValues[match[1]] +" of ");
7. return match;
8. });
9. // string sFlop now contains:
10. // "Flop: [Ace of Hearts] [King of Spades] [Seven of Clubs]"

10.循环中标签的使用

1. outerloop:
2. for (var iI=0;iI<5;iI++) {
3. if (somethingIsTrue()) {
4. // Breaks the outer loop iteration
5. break outerloop;
6. }
7. innerloop:
8. for (var iA=0;iA<5;iA++) {
9. if (somethingElseIsTrue()) {
10. // Breaks the inner loop iteration
11. break innerloop;
12. }
13. }
14. }
• 本文已收录于以下专栏：

Android Studio 的 10 个你很有可能不知道的技巧

Android Studio 是每一个 Android 开发每天都要使用的工具，但是即使你是一个经验丰富的开发人员，你也可能已经错过了许多可以节约生命的技巧...
• PrototypeZ
• 2016年04月20日 00:40
• 972

你可能不知道的10个JavaScript小技巧

• naughty610
• 2010年09月24日 19:03
• 345

10个你可能不知道的JavaScript小技巧

1.变量转换 看起来很简单，但据我所看到的，使用构造函数，像Array()或者Number()来进行变量转换是常用的做法。始终使用原始数据类型（有时也称为字面量）来转换变量，这种没有任何额外的影响的...
• qjbagu
• 2013年09月03日 15:57
• 498

你可能不知道的10个JavaScript小技巧 .

• wangeclipse
• 2013年12月11日 01:19
• 365

你可能不知道的10个JavaScript小技巧

• greatverve
• 2010年09月01日 09:54
• 353

你可能不知道的10个JavaScript小技巧

• wdq892157341
• 2014年12月30日 10:15
• 197

你不知道的JavaScript演示代码Github地址

• Rongbo_J
• 2015年05月16日 22:24
• 2329

【图书】你不知道的Javascript（下卷）

• wGL3k77y9fR1k61T1aS
• 2018年01月05日 00:00
• 558

你不知道的JavaScript（上卷）pdf

• cf406061841
• 2017年07月31日 09:56
• 951

JavaScript中的this（你不知道的JavaScript）

JavaScript中的this，刚接触JavaScript时大家都在大肆渲染说其多么多么的灵巧重要，然而自己并不关心；随着自己对JavaScript一步步深入了解，突然恍然大悟，原来它真的很重要！所...
• ligang2585116
• 2015年07月25日 19:44
• 6134

举报原因： 您举报文章：你可能不知道的10个JavaScript小技巧 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)