1

我正在开发一个 html/js 项目,在该项目中我试图从我的 html 脚本中提取两个字符串,将它们发送到 js 并以类似于typeof. 例如,"true"最终会变成是boolean"Infinity"会是一个number"[]"会是一个object,等等。我已经非常接近我正在寻找的结果,但是我已经在我的代码中找到了一组变量typeof如果您将它们扔掉(而不是作为字符串),通常会很好地解析。尽管它们没有被正确解析。另一个例子:如果你这样做return typeof console.log;,它将返回function. 但是,使用我当前的代码,要解析的更多“不常见”变量以nulland形式出现undefined

这是我为解析字符串而编写的 Javascript:

function valueTypeWriter(a, b) {
    var value = a;
    var valueB = b;
    if (a == 'string') {
        value = ('"' + b + '"');
        valueB = (typeof b);
    }
    else if (a == 'notString'){
        value = b;
        valueB = valueTypeSplicer(b);
    }

    return [value, valueB];
}

function valueTypeSplicer(c) {
    var valueB2 = JSON.parse(c);
    // var valueB2 = c;
    if (Number.isInteger(valueB2) == true) {
        return "number";
    }
    else if ((typeof valueB2 === "undefined")  && (valueB2 !== null)) {
        return "undefined";
    }
    else if((typeof valueB2 === 'function') && (valueB2 !== null)) {
        return "function";
    }
    if((typeof valueB2 === "object") && (valueB2 !== null)) {
        return "object";
    }
    else if ((typeof valueB2 === "boolean")  && (valueB2 !== null)) {
        return "boolean";
    }
    else if (valueB2 !== null){
        return valueB2;
    }
}

这是开始和结束进程的html片段

<tr>
<script>value = valueTypeWriter("string", "");</script>
<td><script>document.write(value[0]);</script></td>
<td><script>document.write(value[1]);</script></td>
</tr>

这是我已经创建的表,但这是我要使用此代码的结果:

通缉表

这就是我的桌子不断出现的方式:

当前表

我已经在这方面工作了一段时间,但我又被困住了,不知道如何进一步做到这一点,尽管我仍在积极研究它。

4

1 回答 1

1

您的代码在为空的类型上引发错误。JSON.parse()只解析有效的 json 字符串。它能够匹配的都是 json 中的有效类型。

https://tc39.es/ecma262/#sec-json.parse

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

也就是说,json 字符串不起作用:

JSON.parse('"document"') 
// variable string
JSON.parse("\""+ c + "\"")

在此处输入图像描述

来源:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

var valueB2 =  Function("return " + c)();
于 2021-04-30T04:16:22.763 回答