无法读取“ ...”的属性未定义

时间:2019-11-07 09:46:24

标签: javascript undefined

我是javascript的入门者,但有一个问题,就是我的console.log无法输出我的函数的返回值。有人可以向我解释这个问题吗?感谢您的帮助!

function convertFromHex(hex) {
  var hex = hex.toString();//force conversion
  var str = '';
  for (var i = 0; i < hex.length; i += 2)
    str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
  return str;
}

function convertToHex(str) {
  var hex = '';
  for(var i=0;i<str.length;i++) {  // "cannot read property 'length' of undefined" error here
    hex += ''+str.charCodeAt(i).toString(16);
  }
  return hex;
}

console.log(convertToHex())  // "cannot read property 'length' of undefined" error here

4 个答案:

答案 0 :(得分:2)

console.log(convertToHex())

您没有将任何参数传递给convertToHex,并且该函数期望一个参数:

function convertToHex(str)
//                    ^^^

现在,当您像在不传递参数的情况下那样调用该函数时,该函数内的str将是undefined

因此,在这里:

for(var i=0; i < str.length; i++)
//                 ^^^^

undefined没有length

答案 1 :(得分:0)

您应该将字符串传递给convertToHex函数。如:

console.log(convertToHex('42532'))

答案 2 :(得分:0)

console.log(convertToHex())在您的函数中需要一个参数。

如果您不添加参数,则会在此处收到cannot read property 'length' of undefined" error,因为JS不知道必须使用convertToHex。

答案 3 :(得分:0)

您以console.log(convertToHex())的形式调用该函数,其中您没有向该函数传递任何争论,因此该函数不会接收未定义的值,并且不会对未定义的值执行.length操作 str

检查以下代码

console.log(convertToHex('abcdef')) ;