js易错问题总结系列

整理遇到的掌握的不是特别好的问题,方便以后重点学习

一、JavaScript的三种消息框alert,confirm,prompt

1. alert是弹出警告框,在文本里面加入\n就可以换行。

2. confirm弹出确认框,会返回布尔值,通过这个值可以判断点击时确认还是取消。true表示点击了确认,false表示点击了取消。

3. prompt弹出输入框,点击确认返回输入框中的值,点击取消返回null。

二、null和''有什么区别

null是对象类型,表示空对象,alert(typeof(null)); 会输出object
" "是一个空格的字符串,alert(typeof(" "));会输出string。

var str1 = null; str引用为空
var str2 = ""; str引用一个空串
也就是null没有分配空间,""分配了空间,因此str1还不是一个实例化的对象,而str2已经实例化。

三、“+”运算符的功能

1、加法运算(左右两侧都为数字)

2、字符串拼接(左右两侧只要有一侧是字符串,那么就是字符串拼接)

3、正号

字符串转布尔值,非空字符串全部转为true

四、

四、逗号运算符

 

一、逗号运算符的特性及作用 
逗号运算符的作用是将若干表达式连接起来。它的优先级别在所有运算符中是最低的,结合方向是"自左至右"的。 (即:逗号运算符:是按顺序执行表达式,并且获得右边表达式的值。)

逗号表达式的一般形式是:表达式1,表达式2,表达式3……表达式n 
逗号表达式的求解过程是:先计算表达式1的值,再计算表达式2的值,……一直计算到表达式n的值。最后整个逗号表达式的值是表达式n的值。 

看下面的两个例子:

var i=0,j=0;
for(;i<10,j<6;i++,j++){//判断条件为:i<10,j<6
   k = i+ j;

}
console.log(k)//10


var i=0,j=0;
for(;i<6,j<10;i++,j++){//判断条件为:i<6,j<10
   k = i+ j;

}
console.log(k)//18

仔细对比就能够发现只是判断条件的时候改变了两个条件的先后位置,结果就不相同了,就是因为逗号运算符,是按顺序执行表达式,并且获得右边表达式的值。所以第一个是满足j<6的时候才可以进入for循环里面,第二个小例子是满足j<10的时候,可以进入for循环里面,所以两个k值是不一样的。

预解析小例题:

var a = 1
fn1()
var fn1 = function(){
   console.log(a)
}// Uncaught TypeError: fn1 is not a function

fn2()
function  fn2(){
   console.log(a)
}//1

第二个可以正常运行,是在我们的预料之内的,那第一个报错是为什么呢?这就涉及到了我们的变量预解析的问题,在第一个小例子中,fn1()执行之前,其实会有一个预解析的过程,var fn1会先被预解析,然后给其赋值为undefined,那undefined后面加括号,肯定会报错呀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值