我的目标不是在真正的网站中使用它,它是为了知识和乐趣。
我想写一些类似的东西:
var =3;
alert( );
Run Code Online (Sandbox Code Playgroud)
(不是空格,而是特定的 unicode 字符)
是否可以?如果没有,是否有等效的东西?
我正在尝试编写一个正则表达式,它将用下划线替换 JavaScript 变量名称中的所有无效字符(在 Java 中)。
我想做的是:
String jsVarName = "1inva>idName".replaceAll("[a-zA-Z_$][0-9a-zA-Z_$]", "_");
Run Code Online (Sandbox Code Playgroud)
并最终得到一个名为 的变量_inva_idName。
我正在努力做的是弄清楚如何使第一个角色与其他角色不同。
[a-zA-Z_$][0-9a-zA-Z_$]是我想要的字符,但我无法弄清楚将它们连接到正确的语法中。我知道 JS var 名称可以是完整的 unicode,但我只关心 ASCII。
var te?st = 1
console.log(test)Run Code Online (Sandbox Code Playgroud)
尝试运行这个简单的代码.它给出了错误:ReferenceError: test is not defined尽管我定义了该变量.为什么会这样?
javascript unicode language-features language-design referenceerror
我注意到,如果我尝试使用带有数字值的键名创建一个对象,则会抛出一个错误(这与此处列出的JavaScript命名一致:哪些字符对JavaScript变量名有效?).但是,我注意到,如果我这样做,我仍然可以动态添加这样的变量名
失败:
object.1foo = "bar";
Run Code Online (Sandbox Code Playgroud)
失败:
object = {
1foo: "bar"
}
Run Code Online (Sandbox Code Playgroud)
成功:
object["1foo"] = bar;
Run Code Online (Sandbox Code Playgroud)
这是为什么?
如何将jquery中使用的美元符号('jquery'的别名)更改为另一个字符.例如
$("#id").css("height","210px");
Run Code Online (Sandbox Code Playgroud)
我想改成这个
*("#id").css("height","210px");
Run Code Online (Sandbox Code Playgroud) 测试字符串是否可以通过正确的变量名称的最可靠方法是什么?我脑子里有几个解决方案,但我不太确定该使用哪一个:
// using <iframe> helper
// assuming I have hidden <iframe> inserted in document.body{}:
var _hidden_iframe_id = "iframe"+ Date.now();
var _fr = document.createElement("iframe");
_fr.setAttribute("id", _hidden_iframe_id);
_fr.setAttribute("name", _hidden_iframe_id);
_fr.style.display = "none";
document.body.appendChild(_fr);
// and .eval()-ing a string as a variable in <iframe>'s .contentWindow{}:
String.prototype.isidentifier = (function (owns, _frames, rnd, ifr_name) {
// use private cache to save evaluated results
var cache = {};
// main
return function () {
// guard against code alike strings
// takes everything up to left …Run Code Online (Sandbox Code Playgroud) 究竟什么是Javascript中有效的属性名称?各种财产分配方法有何不同?属性名称如何影响属性访问?
我原来的问题(见下文)的答案有助于澄清一些事情,但也开辟了一堆新的蠕虫.既然我已经有机会对JavaScript更加熟悉了,我相信我已经能够解决很多问题了.
由于我很难将这些信息合并到一个解释中,我认为扩展我的原始问题可能会有所帮助,并尝试回答它.
最初,MDN JavaScript指南(对象文字)存在一些混淆.具体来说,我想知道为什么他们声称如果属性名称不是有效的JavaScript标识符,那么它必须用引号括起来.然而,他们提供了示例代码,表明可以使用数字7 - 没有引号 - 作为属性名称.
事实证明,指南只是忽略了一个重要部分,Pointy对其进行了更新(粗体更改):
如果属性名称不是有效的JavaScript标识符或数字,则必须用引号括起来.
我还想知道为什么允许属性名称偏离适用于标识符的"可能不以数字开头"规则.这个问题实际上揭示了我对属性名称的完全误解,并且是导致我做更多研究的原因.
正如标题所说,标识符(函数、变量和记录字段名称)中允许使用哪些字符?aöø一切似乎都很好,'_9如果不是第一个字符也是如此。<$;%不要。它是否在某处记录了哪些范围/块的 unicode 字符和符号是允许的?
后续问题:中缀运算符中允许使用哪些字符?
有没有办法对jsdoc中带有“+”等特殊符号的属性进行正确的描述?
例子:
/**
* @typedef {Object} TestObject
* @property {string} "id+name"
*/
Run Code Online (Sandbox Code Playgroud)
在这种情况下,“id+name”似乎是无效语法。
有没有办法让destructure对象的属性名称中包含连字符。我花了一段SyntexError时间这样做(这是合理的,因为 JS 不允许变量名带有 a hyphen)。
let human= {
"first-name":"John",
"last-name":"Doe",
age:150
}
let {age}= human;
// let {"first-name"}= human;//error
// let {first-name}= human;//error
console.log(age)Run Code Online (Sandbox Code Playgroud)
javascript ×8
identifier ×2
regex ×2
accessor ×1
elm ×1
java ×1
jquery ×1
jsdoc ×1
jsdoc3 ×1
object ×1
properties ×1
syntax ×1
unicode ×1
variables ×1