js的小知识2(web论坛常见错误小结)

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。

在下才疏学浅,如有错误或不足欢迎指正。有问题也欢迎交流。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值