首页 > 解决方案 > Javascript。为什么这个条件 s[i+1] 不会给出“超出范围”的错误?

问题描述

var romanToInt = function(s) {
  value = 0;
  for (let i = 0; i < s.length; i += 1) {
    symbols[s[i]] < symbols[s[i + 1]] ? value -= symbols[s[i]] : value += symbols[s[i]]
  }
  return value
};

这是一个 leetcode 示例,我对这种情况感到困惑symbols[s[i]] < symbols[s[i+1]] ?,我不明白为什么 s[i+1] 不会超出范围?还是超出范围但被认为是错误的?

标签: javascriptconditional-statementsternary

解决方案


在 javascript 中,数组是对象,因此在 javascript 数组中不存在超出范围的情况。数组索引存储为键。如果数组中不存在索引,undefined则返回。

const arr = [1, 2, 3];
console.log(typeof arr);    // output: "object"
console.log(arr[4]);        // output: undefined

推荐阅读