Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 比较运算符!==反对0_Javascript_Comparison_Equality - Fatal编程技术网

Javascript 比较运算符!==反对0

Javascript 比较运算符!==反对0,javascript,comparison,equality,Javascript,Comparison,Equality,我认为我的代码的作用是显而易见的 如果我使用,为什么我的代码会返回整个字符串==操作员?我知道Javascript中的数组从索引0开始,这里我输入整个文件名作为参数,因此indexOf(“.”将始终大于0。不,我没有在这里传递.htaccess文件 function getFileExtension(i) { // return the file extension (with no period) if it has one, otherwise false if(i.inde

我认为我的代码的作用是显而易见的

如果我使用
,为什么我的代码会返回整个字符串==操作员?我知道Javascript中的数组从索引
0
开始,这里我输入整个文件名作为参数,因此
indexOf(“.”
将始终大于
0
。不,我没有在这里传递.htaccess文件

function getFileExtension(i) {

    // return the file extension (with no period) if it has one, otherwise false
   if(i.indexOf(".") !== 0) { // 
       return i.slice(i.indexOf(".") + 1, i.length);
   } else {
       return false;
   }
}

// here we go! Given a filename in a string (like 'test.jpg'),

getFileExtension('pictureofmepdf'); return given string
// both operand are same type and value
但如果我将比较改为

(i.indexOf(".") > 0) // logs false 
请注意,在您询问的情况下,这是usvsth3m表格。

indexOf()
返回子字符串的索引,因此它可以返回
0
,这意味着子字符串出现在
0
位置。如果未找到子字符串,则返回
-1
,因此更改
If
语句以反映此逻辑:

if(i.indexOf(".") >= 0)
此外,您应该使用
substring()
从字符串中提取子字符串-
slice()
用于数组

return i.substring(i.indexOf(".") + 1, i.length);
不过,我认为更好的方法是使用
split()

indexOf()
返回子字符串的索引,因此它可以返回
0
,这意味着子字符串出现在位置
0
。如果未找到子字符串,则返回
-1
,因此更改
If
语句以反映此逻辑:

if(i.indexOf(".") >= 0)
此外,您应该使用
substring()
从字符串中提取子字符串-
slice()
用于数组

return i.substring(i.indexOf(".") + 1, i.length);
不过,我认为更好的方法是使用
split()


String方法
indexOf
返回(如果找到)搜索字符串的第一个索引,请记住,索引可以为零,这就是为什么必须进行严格比较以检查
indexOf
是否未返回布尔值false


我建议您在这种情况下使用
lastIndexOf
,因为名为
something.js
的文件将返回
min.js
作为有效扩展名,而不是。

字符串方法
indexOf
返回(如果找到)您搜索的字符串的第一个索引,请记住,索引可以是零,这就是为什么必须进行严格的比较,以检查
indexOf
是否未返回布尔值false


我建议您在这种情况下使用
lastIndexOf
,因为名为
something.js
的文件将返回
min.js
作为有效扩展名,而不是。

好吧,为了简化,我省略了indexOf返回的index,它是数字的类型,或者-1,如果找不到给定值,则不返回布尔值FALSE。所以在比较-1和0的情况下,结果是真的,这就是为什么我实际上得到了输出的给定字符串,而不是false。嗯,现在在我的书签栏里

var z = -1;
console.log(z >= 0); // evaluates false because -1 < 0
console.log(z !== 0); // evaluates true because -1 !== 0
// also if z > 0 it is !== 0, but could be < 0 

好的,为了简化,我省略了indexOf返回index,这是数字的类型,或者-1,如果找不到给定值,则不会返回布尔值FALSE。所以在比较-1和0的情况下,结果是真的,这就是为什么我实际上得到了输出的给定字符串,而不是false。嗯,现在在我的书签栏里

var z = -1;
console.log(z >= 0); // evaluates false because -1 < 0
console.log(z !== 0); // evaluates true because -1 !== 0
// also if z > 0 it is !== 0, but could be < 0 

如果i>0,则明显不同(不相等)!=到零(0)你的问题是什么?你知道0可能是一个有效的索引,对吗?数组在JavaScript0中从0开始这并不是真的添加到任何答案中,但是针对这个特定问题的一个巧妙技巧是执行
返回i.split('..').pop()
。如果i>0,则显然也不同(不相等)!==到零(0)你的问题是什么?你知道0可能是一个有效的索引,对吗?在JavaScription中,数组从0开始这并不是真的添加到任何答案中,但是针对这个特定问题的一个巧妙技巧是执行
返回i.split('.').pop()