js易错点总结
来源:互联网 发布:网络人远程控制 编辑:程序博客网 时间:2024/06/05 10:03
alert(typeof( NaN == NaN));//结果为假。
var undefined;
undefined == null; // true
[] == false; // true
[] == ![]; // true
0 == ''; // true
2 == true; // false
1 == true; // true
- undefined与null相等,但不恒等(===)
- null的类型是对象,undified的类型是undified.
- null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN
- null的使用: (1) 作为函数的参数,表示该函数的参数不是对象。 (2) 作为对象原型链的终点。
(1)变量被声明了,但没有赋值时,就等于undefined。 (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。 (4)函数没有返回值时,默认返回undefined。
把null转换为数字,结果为0。而把undefined转换为数字结果为NaN。
JS 精度不能精确到 0.1 所以 。。。。同时存在于值和差值中
NaN:当某类型转化为数字失败时,返回NaN,表示不是一个数字;NaN不等于任何值,包括它自己,判断时需要使用isNaN(arg)函数
reverse();这个函数是用来进行倒序,这个没有什么可说的,所谓倒序就是大的在前面,小的在后面。
sort();这个函数是用来对数组进行正序排列的
<script>标签的defer="defer"属性 defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。
<script>标签的async="async"属性async的定义和用法(是HTML5的属性)async 属性规定一旦脚本可用,则会异步执行。
console.log(1+ "2"+"2");//1+"2"先转化为“12”然后进行字符串的相加结果是“122”console.log(1+ +"2"+"2");//由于一元运算符“+”的优先级更高,因此+“2”转换为数值2,然后1+2=3,最后数值和字符串相加,转换为字符串的拼接,结果“32”console.log(1+ -"1"+"2");//先执行取反,变成1-1=0,然后0+“2”,结果“02”console.log(+"1"+ "1"+"2");//先执行数值转换,相当于执行1+“1”+“2”,结果“112”console.log("A"- "B"+"2");//先执行"A"- "B"返回NaN,再执行NaN+"2"=>"NaN2"console.log("A"- "B"+2);//先执行"A"- "B"返回NaN+2,NaN执行加减法均返回NaN
两个比较特殊的
1+{}//{}=>"[object Object]",执行数值和字符串的相加,结果"1[object Object]"true+true//2,布尔值转换为数字后讲加1+undefined//数值转换undefined=>NaN,结果NaN1+null//数值转换null=>0,结果1
"1"+undefined//=>"1undefined"相当于执行字符串拼接"1"+null//=>"1null"相当于执行字符串拼接
/* 例2.2 */setTimeout(function() { console.log('taskA, asynchronous');}, 0);console.log('taskB, synchronize');//while(true);-------ouput-------taskB, synchronizetaskA, asynchronous
我们可以看到,定时器延时的时间明明为0,但taskA还是晚于taskB执行。这是为什么呢?由于定时器是异步的, 异步任务会在当前脚本的所有同步任务执行完才会执行。如果同步代码中含有死循环,即将上例的注释去掉,那么这个异步任务就不会执行,因为同步任务阻塞了进程。
setTimeout
就是常见的异步回调,另外常见的异步回调即ajax请求
function request(url, param, successFun, errorFun) { $.ajax({ type: 'GET', url: url, param: param, async: true, //默认为true,即异步请求;false为同步请求 success: successFun, error: errorFun });}request('test.html', '', function(data) { //请求成功后的回调函数,通常是对请求回来的数据进行处理 console.log('请求成功啦, 这是返回的数据:', data);},function(error) { console.log('sorry, 请求失败了, 这是失败信息:', error);});
-->函数重载
① js中没有重载的概念,当遇到多个重名的方法后,最后一个方法定义会覆盖前面的所有方法定义
② 利用arguments实现js函数重载:通过arguments对象可以判断用户在调用函数时,是否传递了参数,以及传递了几个参数,相当于C#中的params,它是用起来像数组的一个对象,但arguments对象本身并不是数组对象。
③ 例子
function add(){ var sum = 0; for(var i =0; i < arguments.length; i++){ sum += arguments[i]; }}
- js易错点总结
- JS总结
- js总结
- JS总结
- js总结
- js总结
- JS总结
- js总结
- js总结
- JS总结
- js总结
- js总结
- js总结
- JS总结:
- js总结
- js总结
- js总结
- js总结
- sublime ( Ctrl + B)调用python控制台运行python脚本无反应/控制台空白
- cookies,sessionStorage和localStorage的区别
- jsp 9个内置对象
- android 判断是wifi还是4g网络
- C#编程基础(四)
- js易错点总结
- hbase数据的存放顺序
- STL中常用数据结构
- g++ windows 编译 (cmd指令)
- C++ Primer(第五版)练习3.32
- MD5加密
- WSGI、webob、routes实例
- Linux命令-tail
- 二叉树的深度优先遍历和广度优先遍历