javascript小提示

  • 字符串可以'借用'数组的非变更方法(调用该方法不影响原数组)
var a = 'abcd';
// 非变更方法
console.log(Array.prototype.join.call(a, '-')); // 'a-b-c-d'
console.log(Array.prototype.map.call(a, function (str) {
    return str.toUpperCase() + '.';
}).join()); // 'A.B.C.D.'
……
// 变更方法
console.log(Array.prototype.reverse.call(a)); // Uncaught TypeError: Cannot ……
  • 直接用.去访问一个整数数字的属性或方法时,.会被当做小数点
// 无效语法
1.toFixed(3); // Uncaught SyntaxError: Invalid or unexpected token
// 正确语法
(1).toFixed(3); // '1.000'
1..toFixed(3); // '1.000'
1['toFixed'](3); // '1.000'
1 .toFixed(3); // '1.000' 注意1后面有空格,不推荐使用,会引起误会
0.1.toFixed(3); // '0.100' 小数已经有小数点了
  • 所有遵循IEEE754规范的语言(JavaScript就是其中之一),在某些小数运算上会出现误差
0.1 + 0.2 === 0.3; // false
0.1 + 0.2; // 0.30000000000000004
  • 判断数字是否是整数
// ES6
Number.isInteger(1); // true
Number.isInteger(1.0); // true
Number.isInteger(1.1); // false
  • 一个不是数字的数字,并且不等于自身
typeof NaN; // 'number'
NaN != NaN; // true
  • 通常在js库中发现void操作符,是为了防止undefined被篡改?
// 例如:undescore.js中144行,使用void 0,而不是undefined
var property = function(key) {
    return function(obj) {
      return obj == null ? void 0 : obj[key];
    };
};
  • 位运算符~与indexOf()的基情
    ~x大致等于-(x+1),例如:
~42; // -(42+1) -> -43

也就是说~-1就是0,而0转换为布尔值是false。再看indexOf()在未索引到时返回的是-1,结合~-1知道-1代表着失败,是不是满满的基情--
因此我们在判断是否索引到时,可以使用~操作符,而不用判断== -1:

var a = 'hello world';
// 原来的判断
if (a.indexOf('lo') != -1) {
    // 找到匹配!
}
// 使用~
if (~a.indexOf('lo')) {
    // 找到匹配
}
  • parseInt解析字符串
parseInt(1/0, 19); // 18 过程:1/0 -> 'Infinity' -> 'i' -> 18
parseInt(false, 16); // 250 过程:false -> 'false' -> 'fa' -> 250
parseInt(parseInt, 16); // 15 过程:parseInt -> "function parseInt() { [native code] }" -> 'f' -> 15

解析:parseInt第一个参数只接受字符串,而传递非字符串时会先转换为字符串;第二个参数是基数,例如基数为19时,0-9 && a-i分别代表0-18、基数为16时,0-9 && a-f分别代表0-15;

  • 逻辑与&&和逻辑或&&
    其实这两个运算符更适合叫选择运算符,因为他们的返回值是两个操作数中的一个。
// &&逻辑与,当条件判断(运算符左边操作数)为true,则返回第二个操作数,反之返回第一个,类似于三元运算符
1 && 0; // 0
0 && 1; // 0
1 ? 0 : 1; // 0
// ||逻辑或,当条件判断(运算符左边操作数)为true,则返回第一个操作数,反之返回第二个,类似于三元运算符
1 && 0; // 1
0 && 1; // 1
1 ? 1 : 0; // 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 11,028评论 0 11
  • 到达圣彼得堡了~ 五个小时的时差让我觉得在飞机上的时光很奇妙,像是停滞了一样。旁边三个俄罗斯母女让我感觉到家庭的温...
    Yomi小溟阅读 566评论 0 2
  • “我是一只鲨鱼” 大海,我的故乡,每天我都在这里生活,海里的一切我都知道,所以大家都叫我万事通汤姆。 直到有一天,...
    圈圈城阅读 670评论 0 1
  • 1 客户主数据创建(XD01)2 物料主数据创建(MM01)3 价格主数据创建(VK11)4 创建订单(VA...
    Mmm_余安阅读 1,345评论 0 2