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

原创粉丝点击