JavaScript—易犯错的题目
来源:互联网 发布:网络推手阿建推网红 编辑:程序博客网 时间:2024/06/05 00:34
var arr = [];arr[0] = 0;arr[1] = 1;arr.foo = 'c';console.log(arr.length)
运行结果为2,当时我想会报错,结果错了,数组的实例本身也是一个对象,可不要忘记typeof ary
的结果可是object
的,arr.length可以认为是arr的属性,那么同理,arr.foo也可以认为是给arr添加了一个属性foo,这个属性的值为’c’
var obj = {};obj.log = console.log;obj.log.call(console, this); //window对象
在这个题目中就算把,console换成obj,null等,结果都是widow对象,因为调用call中传递的this本身就是window
1 == true //trueundefined==null //true
undefined值是派生自null值的,undefined === null为false
属于ajax事件??
$.post(url)是ajax请求; ajax的事件是: ajaxComplete(callback) ajaxError(callback) ajaxSend(callback) ajaxStart(callback) ajaxStop(callback) ajaxSuccess(callback)
输出的结果是??
var a, b;(function() { alert(a); alert(b); var a = b= 3; alert(a); alert(b);})();alert(a);alert(b);
第一次输出的a是局部a,为undefined,输出的b为全局b,为undefined
第二次输出的a是局部a,已经赋值为3,输出的b为全局b,为3
第三次输出的a、b都为全局,则a是undefined,b为3
执行结果??
var A = {n : 4399};var B = function() { this.n = 9999; };var C = function() {var n = 8888; }B.prototype = A;C.prototype = A;var b = new B();var c = new C();A.n++;console.log(b.n); //9999console.log(c.n); //4400
首先B和C的原型对象变为了A对象,也就是说B和C的实例的原型链上肯定是有n属性的,对于b而言,执行了构造函数,所以这个实例自己是含有n的,所以输出的是9999,原型链上向来是找到了就停止寻找了,对于C只能沿着原型链去寻找了,所以找到4400
在JS里判断一个对象oStringObject是否为String??
console.log(typeof new String('aaa')); //'object'
在这种情况下typeof是不能作为判断的方法的,这个时候就需要instanceof
oStringObject instanceof String
运行结果??
var msg = 'hello';for(var i = 0; i < 10; i++) { var msg = 'hello' + i * 2 + i;}alert(msg); //hello189
for循环中的声明会被忽略,因为此时全局对象中已经声明了a,所以for循环做的只是每次给msg赋予不同的值,最后输出的是i = 9的计算结果,所以输出hello189
console.log(([])?true:false); //trueconsole.log(([]==false?true:false)); //trueconsole.log(({}==false)?true:false) //falseBoolean([]); //trueBoolean({}); //trueNumber([]); //0Number({}); // NaNNumber(false); //0
“==”运算符比较**“喜欢”**Number类型(但是null == 0 与 undefined == 0的结果是false),所以前面三个输出可以转换为
console.log(true ? true:false);console.log((0 == 0) ? true : false);console.log((NaN == 0 ? true : false));
输出结果??
(function() { var a = b = 5; })(); console.log(b);console.log(a);
5,Uncaught ReferenceError: a is not defined
a是没有被声明的,但是window.a为undefined
- JavaScript—易犯错的题目
- javascript,一道容易犯错的小题
- 以下是JavaScript容易犯错的九个陷阱。
- C++/C之易犯错的地方
- 犯错,是为了未来的不犯错
- C++/C/Unix中容易犯错的小题目(2015.8.10更新)
- 容易犯错的做法
- 不敢“犯错”的应试教育
- JS易犯错集合
- cocos2d-x 易犯错
- 犯错
- 犯错!!!
- 犯错
- 犯错
- 犯错
- 犯错
- 关于数据库的一些易犯错的总结
- 中国人最易犯错的30句英语
- 引言之“财务管理”
- RecyclerView 的回收和复用
- Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解
- Git提交项目到GitHub配置
- 查看uboot源代码的预备知识
- JavaScript—易犯错的题目
- 关于WINDOWS去ping linux为什么ping不通
- Spark Core 调优指南
- jdbc中连接驱动的方式的区别
- Linux文件类型与扩展名
- Python 边做边学 9.2 数据库操作--定义数据字段(DbColumn)
- OpenJ_POJ
- 炮兵阵地(状态压缩dp)解题报告
- 欢迎使用CSDN-markdown编辑器