【问题标题】:How do I treat all function arguments as strings?如何将所有函数参数视为字符串?
【发布时间】:2018-11-02 12:16:40
【问题描述】:

我有这个功能:

function read(x) {
  console.log("You typed: " + x);
}

如果我在控制台中运行read("Hello"),我会得到:

你输入:你好;

但如果我运行read(Hello),我会得到:

Uncaught ReferenceError: Hello is not defined

我是这样修改函数的:

function read(x) {
  console.log("You typed: " + x.toString());
}

但没有成功。

因此,我想将函数参数视为字符串,而不管用户如何输入它。我该如何做到这一点?

【问题讨论】:

  • Nvm,sugar.js 不是我想象的那样。可能有一些可用的预处理器可以满足您的需求,但同样,为了这点好处,工作量太大了。
  • 应该注意的是,他们的要求并不像某些人所暗示的那样完全荒谬;它只是在 JS 中不可用。在 Clojure 中这很简单:(defmacro read [s] `(println ~(str s)))(read hello) 打印 hello,但这是因为 Clojure 支持宏。

标签: javascript string parameter-passing


【解决方案1】:

你不能。语言语法就是这样设计的,所以如果你写read(Hello),它会寻找一个名为Hello的变量。这不存在,因此出现错误。

如果你想传递一个字符串,你需要引用它(或将它分配给一个变量,然后传递变量)。没有办法。

【讨论】:

  • “没有办法。” - 它根本不能被称为“绕道而行”。这只是一个变量。
  • 没有办法引用你的字符串文字,我的意思是。
  • 我认为他的问题是他无法区分变量和值。
【解决方案2】:

在深入编程之前,请阅读一些基本的编码。

当你打电话给read 时喜欢:

read("Hello");

值已传递给read 函数。但是在调用时:

read(Hello);

这是用变量Hello 的值调用read 函数,并且从未声明Hello

ReferenceErrorReferenceError 对象表示引用不存在的变量时出现错误。

值可以是字符串、数字、布尔值,也可以是数组、对象。

read(5);
read(true);
read('a');

这些都是价值观。

var a = 55;
var b = 'Hello';
var c = false;

read(a); // Passing value of a variable
read(b); // Passing value of b variable
read(c); // Passing value of c variable

变量:您使用variables 作为应用程序中值的符号名称。变量的名称,称为标识符,符合一定的规则。

【讨论】:

    【解决方案3】:

    当用户输入字符串时,它将作为字符串传递。例如:

    var str = "Hello";
    read(str); // will print "You typed: Hello"
    

    换句话说,当你输入一个字符串时,比如说通过控制台,你不必把它放在引号中。但是,当您在代码中为变量设置字符串值时,您确实已将其放在引号中。

    但是你试图用这个read(Hello) 做的是传递一个名为Hello 的变量,它在这个上下文中甚至不存在。要修复它,你可以这样写:

    var Hello = "Hello";
    read(Hello); // will print "You typed: Hello"
    

    它会正常工作的。

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多