true and false
‘0’ 不是 false
‘ ‘ 不是 false
‘false’ 不是 false
false 为:
- 空字符串 ‘’
- 数字 0
- false
- null
- undefined
true 则与上面的 false 相反
1 | var b1 = Boolean(""); // 返回 false, 空字符串 |
字符串转换为数字
第一个非空白字符如果是非数字符则返回 NaN
数字后面的非数字字符会被忽略掉
parseInt(string, radix),返回对应的 10 进制的值
1
2
3
4
5
6
7
8parseInt("10"); //返回 10
parseInt("19", 10); //返回 19 (10+9)
parseInt("11", 2); //返回 3 (2+1)
parseInt("17", 8); //返回 15 (8+7)
parseInt("1F", 16); //返回 31 (16+15)
parseInt("010"); //未定:返回 10 或 8
parseInt("xyz"); // NaN
parseInt(' 10 xyz '); // 10parseFloat(string),返回一个浮点数
1
2
3
4
5parseFloat("3.14");
parseFloat("314e-2");
parseFloat("0.0314E+2");
parseFloat("3.14more non-digit characters"); // 3.14
parseFloat("FF2"); // NaN
使用 Number 转换字符串为数字
Number() 与 parseInt() 和 parseFloat() 类似,区别在于 Number() 转换的是整个值,而parseInt() 和 parseFloat() 则可以只转换开头的数字部分。Number() 会先判断要转换的值能否被完整的转换,然后再判断是调用 parseInt() 或 parseFloat()。
1 | Number(false); // 返回 0 |
使用 || 运算符实现默认参数
如果第一个参数返回的值为 false,那么第二个值将会认为是一个默认值
1 | function User(name, age) { |
使用 === 而不是 ==
==
(或!=
)操作符在需要的时候会自动执行类型转换。===
(或!==
)操作不会执行任何转换,它将比较值和类型,而且在速度上也被认为优于==
。
带有命名空间的类定义
1 | <!DOCTYPE html> |
删除字符串头尾的空白字符
使用 jQuery:
$.trim(string)
自定义 trim() 函数:
1
String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g, "");};
将 arguments 对象转换成一个数组
1 | var argArray = Array.prototype.slice.call(arguments); |
四舍五入一个数字,保留 N 位小数
1 | var num =2.443242342; |
使用 for-in 遍历一个对象内部属性
1 | for (var name in object) { |
基于 JSON 的序列化和反序列化
1 | var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} }; |
创建数组
1 | var ns = []; |
对 URL 进行编码
1 | var myOtherUrl = "http://example.com/index.html?url=" + encodeURIComponent(myUrl); |
encodeURI 和 encodeURIComponent
它们都是用来对 URI 字符串进行编码的全局函数,但是它们的处理方式和使用场景有所不同。URI 中有几类不同的字符:
- 基本字符: 包括所有的大写字母、小写字母和数字
- 保留字符:
/
?
:
@
&
=
+
$
,
;
- Mark 字符:
-
_
.
!
~
*
'
(
)
使用场景
encodeURI
: 该函数对传入字符串中的所有非基本字符
、保留字符
和Mark 字符
进行转义编码,例如中文、空格(转换成为%20
),用来对完整的 URI 字符串进行编码处理encodeURIComponent
: 和 encodeURI 只有一个不同点,那就是对于保留字符
同样做转义编码,例如,字符:
被转义字符%3A
代替,例如编码 URL 的参数列表中的每一个部分时使用
1 | encodeURI('http://www.xtuer.com/foo?username=中文&age=22'); |
可以访问 http://pressbin.com/tools/urlencode_urldecode/ 对 url 进行编码
数组插入、更新、删除
数组的插入、更新、删除使用 splice(index, count [, newElement])
来实现:
- index: 操作的下标
- count: 从 index 起需要删除的元素个数
- newElement: 替换上面删除的 count 个元素的新元素
1 |
|
添加到数组最后面可以使用 push(newElement)
数组排序
1 | var ns = [5, 2, 3, 1, 4]; |
数组调用 map(method) 方法
对数组里的每个元素调用 method() 方法,返回值组成一个新的数组,新数组的元素个数和原来数组的个数一样,原来的数组不受影响。
1 | var str = [1, 2, 3].map(formatNumber).join(':'); // 输出 01:02:03 |
格式化日期
把日期格式化为 yyyy-MM-dd hh:mm:ss
的格式
1 | <script> |
Radio Button 的选中与取消
1 | // [1] 选中的 Radio Button |
checkbox 也是一样的
多行字符串
1 | // 利用函数的 toString() 函数把函数的注释提取出多行字符串 |
克隆对象
浅拷贝:
1
2
3
4
5
6
7
8
9
10
11var obj1 = {
id: 1,
tags: [1, 2, 3, 4]
}
var obj2 = $.extend({}, obj1); // 浅拷贝
obj2.id = 2;
obj2.tags[0] = 0; // obj1.tags 和 obj2.tags 是指向同一个地址
console.log('obj1: ' + JSON.stringify(obj1));
console.log('obj2: ' + JSON.stringify(obj2));输出:
1
2obj1: {"id":1,"tags":[0,2,3,4]}
obj2: {"id":2,"tags":[0,2,3,4]}深拷贝:
1
2
3
4
5
6
7
8
9
10
11var obj1 = {
id: 1,
tags: [1, 2, 3, 4]
}
var obj2 = $.extend(true, {}, obj1); // 深拷贝,true 表示深拷贝
obj2.id = 2;
obj2.tags[0] = 0; // obj1.tags 和 obj2.tags 指向不同的地址
console.log('obj1: ' + JSON.stringify(obj1));
console.log('obj2: ' + JSON.stringify(obj2));输出:
1
2obj1: {"id":1,"tags":[1,2,3,4]}
obj2: {"id":2,"tags":[0,2,3,4]}解析 URL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31// This function creates a new anchor element and uses location
// properties (inherent) to get the desired URL data. Some String
// operations are used (to normalize results across browsers).
function parseURL(url) {
var a = document.createElement('a');
a.href = url;
return {
source: url,
protocol: a.protocol.replace(':',''),
host: a.hostname,
port: a.port,
query: a.search,
params: (function(){
var ret = {},
seg = a.search.replace(/^?/,'').split('&'),
len = seg.length, i = 0, s;
for (;i<len;i++) {
if (!seg[i]) { continue; }
s = seg[i].split('=');
ret[s[0]] = s[1];
}
return ret;
})(),
file: (a.pathname.match(//([^/?#]+)$/i) || [,''])[1],
hash: a.hash.replace('#',''),
path: a.pathname.replace(/^([^/])/,'/$1'),
relative: (a.href.match(/tps?://[^/]+(.+)/) || [,''])[1],
segments: a.pathname.replace(/^//,'').split('/')
};
}1
2
3
4
5
6
7
8
9
10
11
12var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top');
myURL.file; // = 'index.html'
myURL.hash; // = 'top'
myURL.host; // = 'abc.com'
myURL.query; // = '?id=255&m=hello'
myURL.params; // = Object = { id: 255, m: hello }
myURL.path; // = '/dir/index.html'
myURL.segments; // = Array = ['dir', 'index.html']
myURL.port; // = '8080'
myURL.protocol; // = 'http'
myURL.source; // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'