Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery keyup=而不是==_Javascript_Jquery - Fatal编程技术网

Javascript jQuery keyup=而不是==

Javascript jQuery keyup=而不是==,javascript,jquery,Javascript,Jquery,我使用jQuery用Javascript编写了一个函数,它按照我想要的方式工作。问题是,我输入了一个拼写错误,并使用赋值运算符而不是==或==。出于某种原因,赋值运算符可以工作,而检查等式==则不行。下面的函数可以工作,但似乎不应该。我指的部分是event.type='keyup'。你知道为什么吗 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <

我使用jQuery用Javascript编写了一个函数,它按照我想要的方式工作。问题是,我输入了一个拼写错误,并使用赋值运算符而不是==或==。出于某种原因,赋值运算符可以工作,而检查等式==则不行。下面的函数可以工作,但似乎不应该。我指的部分是event.type='keyup'。你知道为什么吗

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class = "box" id = "box1">
<input class = "ti"  id = "t1" type="text"  placeholder= "Enter to do" >
</div>

<script>
$( ".ti" ).on( "keydown", function( event ) {
$( "#log" ).html( event.type + ": " +  event.which );
if (event.type = 'keyup' && event.which == '13') {
    alert('here');
}
});</script>

$(“.ti”)。在(“按键向下”,函数(事件){
$(“#log”).html(event.type+”:“+event.which);
if(event.type='keyup'&&event.which=='13'){
警报(“此处”);
}
});

这是因为
event.type='keyup'
返回
keyup
,非空字符串是JavaScript中的真实值


编辑:我错过了
&&
操作符及其在表达式中的作用,可能是因为我关注了JavaScript中非空字符串的真实性,这仍然与所发生的事情有关。所以这个答案在你的情况下并不完全正确。由于Kay发布了一个正确的答案,我不会更新这个答案。

在JavaScript中,逻辑AND(
&&
)的优先级高于赋值(
=
+=
,…),即
a=b和&c
被解析为
a=(b和&c)


因此,条件
event.type='keyup'&&event.which='13'
被解析为
event.type=('keyup'&&(event.which='13'))
。JavaScript中有一个非空字符串,因此该表达式可以简化为
event.type=(event.which=='13')
。请注意,字符串“keyup”已从表达式中删除。现在赋值计算为赋值,即
事件。根据
事件的值,type
会被true或false覆盖。这取决于
事件的值。哪个
,这个比较决定条件是否为true。

除非这里我错了,否则赋值几乎总是等于true。如果你想知道为什么平等不起作用,那么记录
event.type
的实际内容。它被解析为
event.type=('keyup'&&&(event.which='13'))
,可以简化为
event.type=(event.which='13')