1.函数加()和不加()的区别
function func(){
return 1;
}
alert(func);//输出的是这个函数
alert(func());//1 ,
加() 就是调用函数,不加() 就是函数这个对象。,区别在哪?
setTimeout(func,1000);//一秒后执行;
setTimeout(func(),1000)//立即执行;
2.在行内样式中直接width=”“和 style=”width=””
从html的角度说明确实很难理解,也说不清楚。
有人会说这是规定语法。但是两个都是合法的。
<div width='100'></div>
<div style="width='100';"></div>
setAttribute('width',100);//第一个相当于这个。所以设置canvas的时候不能用style 哦
style.width=100;//第二个相当于这个
3.一个i++ 的问题
不是搞什么一大堆加什么的(实际都不会这么用,项目组有这种,估计会被直接打shi吧)
var i=1;
var b=i++ + ++i;//4
i=1;
b=(i+1) + i++;//3 ++i==(i+1),是成立的
//从这里可以看出来,i++ 使用过再+1 是在i++ +
//(i的值遇到第一个运算符的时候值就变为了2 ,而不是运算完毕)
4.赋值的一个问题
//第一个段
var a = function () {
console.log(1);
};
a.temp = 1;
var b = a;
a = function () {
console.log(2);
};
a.temp = 2;
console.log(b.temp);//1
//第二段
var a = function () {
console.log(1);
};
a.temp = 1;
var b = a;
a.temp = 2;
console.log(b.temp);//2
在基本类型之外的对象赋值的时候,其实没有创建新的对象。只是修改指向的内存。在第二段代码中,这就是为什么赋值后,修改a.temp 的值,b.temp 的值会发生改变。
第一段代码中,由于中间再次赋值,指向再次发生改变,所以修改对a.temp,b.temp 没有发生改变。
下面这个直观点
a=[4,5,6,1,2,3,1]
b=a;
console.log(b)//[4,5,6,1,2,3,1]
a.pop();//修改a
console.log(a+" "+b)//a 和b 的值都被修改了。
一个NaN的小问题
console.log(isNaN(null)); //false
console.log(isNaN(undefined));//true
console.log(3+null); //3
console.log(3+undefined); //NaN
测试,null ,系统认为这是一个数字,而undefined 不是数字。
所以3+null 还是数字 3 。 3 +undefined 不是数字。
但另外一个地方就是 null==undefined 输出 true。
在下才疏学浅,如有错误或不足欢迎指正。有问题也欢迎交流。