我试图学习JavaScript中的条件语句,当我调用函数时仍然不传递任何参数时,我得到的x等于y。我不知道我在哪里缺少代码。
function tryMe(x, y) {
if (x == y) {
console.log("x and y are equal");
} else if (x > y) {
console.log("x is greater than y");
} else if (x < y) {
console.log("x is less than y")
} else {
console.log("no values")
}
}
tryMe();
这是我的控制台日志:
x和y等于// //我期望它为console.log(“ no values”)
答案 0 :(得分:6)
因为undefined
等于undefined
如果不传递参数,则x
和y
都将变为未定义状态
为什么会发生这种情况-当您只声明一个变量时,它具有默认值undefined
。在您的情况下也是如此,您的fn tryMe()
声明为x
,而y
的默认值为undefined
,当您比较它们时,两者相等。
console.log(undefined == undefined)
var x, y
// Here you declared the variable which happens in your function
if(x === y) {
console.log('You never defined what value I have so Javascript engine put undefined by default')
}
答案 1 :(得分:5)
发生这种情况是因为,当您呼叫tryMe()
时,x
和y
都是undefined
,这意味着它们是相等的。因此,您首先需要检查是否为x
和y
分配了值。
function tryMe(x, y) {
if (typeof(x) != 'undefined' && typeof(y) != 'undefined') {
if (x == y) {
console.log("x and y are equal");
} else if (x > y) {
console.log("x is greater than y");
} else if (x < y) {
console.log("x is less than y")
} else {
console.log("no values")
}
} else {
console.log("no values")
}
}
tryMe();
tryMe(1);
tryMe(1, 2);
答案 2 :(得分:3)
在x = undefined
和y= undefined
中没有传递参数时
x == y // true
答案 3 :(得分:3)
如果您不向函数中传递任何参数x
和y
并用undefined
和undefined === undefined
进行初始化,这就是为什么要获取{{1 }}
一种更好的方法是
x and y are equal
答案 4 :(得分:2)
由于您未在函数调用中传递任何 参数 ,因此函数 参数 x
和y
均为undefined
,因此它们相等:
function tryMe(x, y){
console.log(x == y); // true
if (x == y){
console.log("x and y are equal");
} else if(x > y){
console.log("x is greater than y");
} else if (x < y){
console.log("x is less than y")
} else {
console.log("no values")
}
}
tryMe();
答案 5 :(得分:2)
当需要参数时,您可能会抛出错误:
const isRequired = () => {
throw new Error('param is required');
};
function tryMe(x = isRequired() ,y = isRequired() ){
if (x == y){
console.log("x and y are equal");
} else if(x > y){
console.log("x is greater than y");
} else if (x < y){
console.log("x is less than y")
} else {
console.log("no values")
}
}
tryMe(2,3);
tryMe(2);
tryMe();
function tryMe(x ,y ){
if(x == "" || x == undefined || y == "" || y == undefined){
console.log("no values !");
} else if (x == y){
console.log("x and y are equal");
} else if(x > y){
console.log("x is greater than y");
} else if (x < y){
console.log("x is less than y")
} else {
console.log("no values")
}
}
tryMe(2,3);
tryMe(2);
tryMe();
答案 6 :(得分:1)
x
和y
最终都是undefined
值,该值自然比较相等。