Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我真的很喜欢ruby允许的方式;isACar?“;方法名,但如何在js中实现?_Javascript - Fatal编程技术网

Javascript 我真的很喜欢ruby允许的方式;isACar?“;方法名,但如何在js中实现?

Javascript 我真的很喜欢ruby允许的方式;isACar?“;方法名,但如何在js中实现?,javascript,Javascript,我知道一种方法,但不实用: var a = {'isACar?': function(){}} a['isACar?']() 我想要这样的 a.isACar?() 感谢在JavaScript中使用点表示法无法访问名称中带有问号的属性,它将启动一个三元运算符。在JavaScript中使用点表示法无法访问名称中带有问号的属性,它将启动一个三元运算符。这无法完成。。。索塔。问题在于,在javascript中,问号用于内联if。也就是说,如果你正在用一个真实的东西做一些事情,你可能会在某种测试中使用

我知道一种方法,但不实用:

var a = {'isACar?': function(){}}
a['isACar?']()
我想要这样的

a.isACar?()

感谢

在JavaScript中使用点表示法无法访问名称中带有问号的属性,它将启动一个三元运算符。

在JavaScript中使用点表示法无法访问名称中带有问号的属性,它将启动一个三元运算符。

这无法完成。。。索塔。问题在于,在javascript中,问号用于内联if。也就是说,如果你正在用一个真实的东西做一些事情,你可能会在某种测试中使用它,所以内联if可能对你有用。例如:

var c = {};
c.isACar = function(){dosomethinghere};
var d = c.isACar()? 5 : 23;

如果c是汽车,则将d设置为5,否则将设置为23。

这无法完成。。。索塔。问题在于,在javascript中,问号用于内联if。也就是说,如果你正在用一个真实的东西做一些事情,你可能会在某种测试中使用它,所以内联if可能对你有用。例如:

var c = {};
c.isACar = function(){dosomethinghere};
var d = c.isACar()? 5 : 23;

如果c是汽车,则将d设置为5,否则设置为23。

您不能用javascript执行此操作。
字符将被解释为运算符

标识符必须以$、\或Unicode类别“大写字母(Lu)”、“小写字母(Ll)”、“标题字母(Lt)”、“修饰字母(Lm)”、“其他字母(Lo)”或“字母编号(Nl)”中的任何字符开头

字符串的其余部分可以包含相同的字符,加上任何U+200C零宽度非连接字符、U+200D零宽度连接字符以及Unicode类别中的字符“非间距标记(Mn)”、“间距组合标记(Mc)”、“十进制数字(Nd)”或“连接器标点(Pc)”

但好的一面是,变量可能有这样的恶名:

var ಠ_ಠ = eval;
// or
var π = Math.PI;

您不能在javascript中执行此操作。
字符将被解释为运算符

标识符必须以$、\或Unicode类别“大写字母(Lu)”、“小写字母(Ll)”、“标题字母(Lt)”、“修饰字母(Lm)”、“其他字母(Lo)”或“字母编号(Nl)”中的任何字符开头

字符串的其余部分可以包含相同的字符,加上任何U+200C零宽度非连接字符、U+200D零宽度连接字符以及Unicode类别中的字符“非间距标记(Mn)”、“间距组合标记(Mc)”、“十进制数字(Nd)”或“连接器标点(Pc)”

但好的一面是,变量可能有这样的恶名:

var ಠ_ಠ = eval;
// or
var π = Math.PI;

你为什么要这么做?为什么?如果这是一个语法上的甜点,那还是很奇怪的,但它甚至比这个还小——它只是函数显示方式的一个小变化。我看到这个问题的最初想法是“哇,编程语言允许你使用?在标识符中,ew!”@JamesThorpe:它实际上只允许你使用?在方法上。不是变量。我不知道为什么。不过也没那么奇怪。大多数LISP变体都允许标识符中除了空格、括号和其他一些内容之外的任何内容。@olleicua感谢您提供的信息。我需要找时间调查一些我不熟悉的语言,至少这样我知道它们什么时候可能有用……你为什么要这样做?为什么?如果这是一个语法上的甜点,那还是很奇怪的,但它甚至比这个还小——它只是函数显示方式的一个小变化。我看到这个问题的最初想法是“哇,编程语言允许你使用?在标识符中,ew!”@JamesThorpe:它实际上只允许你使用?在方法上。不是变量。我不知道为什么。不过也没那么奇怪。大多数LISP变体都允许标识符中除了空格、括号和其他一些内容之外的任何内容。@olleicua感谢您提供的信息。我需要找时间研究一些我不熟悉的语言,至少这样我知道它们什么时候可能有用……你可以选择一个任意的unicode字符来代表?,例如:函数isCoolʃ(){return true;}你可以选择一个任意的unicode字符来代表?,例如:函数isCoolʃ(){return true;}