赋予函数后,变量未定义

时间:2019-04-19 20:02:21

标签: javascript

我有一个将十六进制转换为字符串的函数。 控制台然后说:“在第148行未定义十六进制”,即: “ hex = hex.toString()”。发生这种情况的任何原因?

function hexToStr(hex) {
    hex = hex.toString();
    var str = '';
    for (var n = 0; n < hex.length; n += 2) {
        str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
    }
    return str;
}

2 个答案:

答案 0 :(得分:0)

未定义是JavaScript中的一个值,例如null。不管调用此函数是什么,都给十六进制提供不确定的值。

答案 1 :(得分:0)

您的功能似乎工作正常。为了安全起见,也许添加检查以确保输入是字符串。

function hexToStr(hex) {
  if (typeof(hex) !== 'string') throw ('Input a string')
  var str = '';
  for (var n = 0; n < hex.length; n += 2) {
    str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
  }
  return str;
}

function handleClick() {
  var input = document.getElementById('hexGoesHere').value
  var output = hexToStr(input)
  document.getElementById('stringGoesHere').innerText = output
}
<input id="hexGoesHere" type="text" value="48656c6c6f20776f726c6421"></input>
<button onClick=handleClick()>Convert</button>
<p>Output:</p>
<p id="stringGoesHere"></p>