1.转化为Boolean类型
2.字符串替换
String.prototype.replace函数经常会让那些非常熟悉C#或者Java的程序员感到迷惑。
比如:
如果你传递一个字符串到第一个参数,则只有第一个找到的匹配字符串被替换。
为了解决这个问题,我们可以使用正则表达式:
如果没有传递第二个参数,则按照如下规则:
->如果 str以 0x 开头,则认为是16进制。
->如果 str以 0 开头,则认为是8进制。
->否则,认为是10进制。
因此如下的代码将会让人很迷惑,如果你不知道这些规则:
5. undefined是JavaScript中保留关键字么?
看起来像是的,但实际上undefined并不是JavaScript中的关键字:
注:在JavaScript程序中,千万不要这样做,这个技巧只是告诉你有这么一回事而已。
所有JavaScript中的值都能隐式的转化为Boolean类型,比如:
0 == false; // true
1 == true; // true
'' == false // true
但是这些值都不是Boolean类型。
用三个等于号进行比较时:但是这些值都不是Boolean类型。
0 === false; // false
1 === true; // false
'' === false // false
现在的问题是如何将其他类型转化为Boolean类型:
!!0 === false; // true
!!1 === true; // true
!!'' === false // true
2.字符串替换
String.prototype.replace函数经常会让那些非常熟悉C#或者Java的程序员感到迷惑。
比如:
'Hello world, hello world'.replace('world', 'JavaScript');
// The result is "Hello JavaScript, hello world"
replace函数的第一个参数是正则表达式。
如果你传递一个字符串到第一个参数,则只有第一个找到的匹配字符串被替换。
为了解决这个问题,我们可以使用正则表达式:
'Hello world, hello world'.replace(/world/g, 'JavaScript');
// The result is "Hello JavaScript, hello JavaScript"
我们还可以指定在替换时忽略大小写:
'Hello world, hello world'.replace(/hello/gi, 'Hi');
// The result is "Hi world, Hi world"
3.为parseInt函数指定第二个参数
parseInt用来将字符串转化为整形的数字,语法为:
parseInt(str, [radix])
其中第二个参数是可选的,用来指定第一个参数是几进制的。
如果没有传递第二个参数,则按照如下规则:
->如果 str以 0x 开头,则认为是16进制。
->如果 str以 0 开头,则认为是8进制。
->否则,认为是10进制。
因此如下的代码将会让人很迷惑,如果你不知道这些规则:
parseInt('08'); // 0
parseInt('08', 10); // 8
所以,安全起见一定要为
parseInt指定第二个参数。
4.从数组中删除一个元素
或许我们可以通过delete来做到:
var arr = [1, 2, 3, 4, 5];
delete arr[1];
arr; // [1, undefined, 3, 4, 5]
可以看到,delete并不能真正的删除数组中的一个元素。删除的元素会被undefined取代,数组的长度并没有变化。
事实上,我们可以通过Array.prototype中的splice函数来删除数组中的元素,如下所示:
var arr = [1, 2, 3, 4, 5];
arr.splice(1, 1);
arr; // [1, 3, 4, 5]
5. undefined是JavaScript中保留关键字么?
看起来像是的,但实际上undefined并不是JavaScript中的关键字:
var undefined = 'Hello';
undefined; // 'Hello'
这段代码可能会让你感到很奇怪,不过它的确能够正常运行,
undefined只是JavaScript中一个预定义的变量而已。
注:在JavaScript程序中,千万不要这样做,这个技巧只是告诉你有这么一回事而已。
6.判断一个变量是否为undefined
typeof(name2) === ‘undefined’; // true
7.0.1+0.2 != 0.3
JavaScript将小数作为浮点数对待,所以可能会产生一些四舍五入的错误,比如:
0.1 + 0.2; // 0.30000000000000004
(0.1 + 0.2).toFixed(); // "0"(0.1 + 0.2).toFixed(1); // "0.3"你可以通过toFixed方法指定四舍五入的小数位数:
吃水不忘挖井人:http://www.cnblogs.com/sanshi/archive/2009/08/30/1556677.html