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

Cannot read property of '...' undefined

我是 javascript 的初学者,我的 console.log 无法输出函数的 return 值。有人可以向我解释这个问题吗?感谢您的帮助!

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

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

console.log(convertToHex('42532'))

console.log(convertToHex())

您没有向 convertToHex 传递任何参数,而该函数 期望 一个参数:

function convertToHex(str)
//                    ^^^

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

因此,这里:

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

undefined 没有 length.

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

如果您不添加参数,您会在此处收到 cannot read property 'length' of undefined" error,因为 JS 不知道什么必须转换为十六进制。

您将函数调用为 console.log(convertToHex()) ,其中您没有将任何参数传递给函数,因此该函数没有收到未定义的值,并且未对未定义的值执行 .length 操作str

用下面的代码检查

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