- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
请耐心等待。
tl;dr 只有当我在函数参数之间放置换行符时,我的代码才有效。 javascript 中每行的堆栈大小或函数声明是否有最大值?
我一直在测试我的一个假设,如果您足够有创意,所有 javascript 函数都可以重写(通过牺牲速度和可读性)而无需使用:
""
、[]
、0
、false
、{}
等)或者,通俗地说,整个函数应该匹配 /^[a-zA-Z(){}.,]*$/
。
到目前为止,我在证明这个假设的过程中面临的最大挑战(我还没有接触正则表达式,这应该很有趣)是处理数学,这在很大程度上依赖于运算符和数字。
我已经编写了遵循我的参数的函数,并且:
add(a,b)//a+b
)digs(one,three,six,eight)//1368
)setprop(a,b,c)//a[b]=c
)一般的想法是像下面这样构造函数,以这种方式使算法稍微更具可读性和可写性:
function(...){(function(add,morefuncs...){algorithm...})(function(){...},morefuncs...)}
我的函数单独工作,当它们足够少时也以这种形式工作,但是当我添加更多时,我注意到一个非常奇怪的错误:
//For some reason, this breaks:
func(arguments,...,f1,f2)
//And this doesn't:
func(arguments,...,
f1,f2)
考虑到我的代码需要大量的匿名函数,我假设 javascript 可以在一行中处理最大数量的匿名函数,但我找不到任何说明这一点或其他方面的文档。
这是我的代码的三个版本:
版本 1:没有换行符,不起作用
(function(){return(function(domath){return(domath)(function(getprop,setprop,add,sub,mlt,div,cct,digs,zero,one,two,three,four,five,six,seven,eight,nine){console.log(getprop,setprop)})})((function(){return(function(m,i,o,c,g,h){return(function(a,d){return(function(s,t){return(function(r,n){return(function(f){return(f).apply(null,Array(g,h,function(x,y){return(r(a(x,y)))},function(x,y){return(r(s(x,y)))},function(x,y){return(r(m(x,y)))},d,c,function(){return(Number(Object.keys(arguments).map(function(k){return(g(arguments,k))}).join(String())))}).concat(n))})})(function(x){return(Number(x.toFixed(t)))},Array(Number(),Math.exp(Number()),Array(Number(),String()).toString().length,Array(Number(),Number()).toString().length,Boolean(Math.exp(Number())).toString().length,Boolean(Number()).toString().length,Array(Boolean(),String()).toString().length,Array(Boolean(),Number()).toString().length,Array(Boolean(),Number(),String()).toString().length,Array(Boolean(),Number(),Number()).toString().length))})(function(x,y){return(Math.log(d(Math.exp(x),Math.exp(y))))},Number(c(String(o),String(Number()))))})(function(x,y){return(Math.log(m(Math.exp(x),Math.exp(y))))},function(x,y){return(m(x,i(y)))})})(function(x,y){return(Math.log(Math.pow(Math.exp(x),y)))},function(x){return(Math.pow(x,Array().indexOf(Number())))},Math.exp(Number()),function(x,y){return(Array(x,y).join(String()))},function(x,y){return(Object.getOwnPropertyDescriptor(x,y).value)},function(x,y,z){Object.defineProperty(x,y,Object.getOwnPropertyDescriptor(Array(z,Number()).slice(Number(),Math.exp(Number())),Number()))})})())})()
在 Chrome 上记录 function anonymous(urn) function anonymous(urn)
。 (什么是“urn”?我没有该名称的任何变量,并且该字符串的唯一实例是在“return”关键字中。)
在 Firefox 上记录 function anonymous() function anonymous()
。
版本 2:使用一个换行符,有效
(function(){return(function(domath){return(domath)(function(getprop,setprop,add,sub,mlt,div,cct,digs,zero,one,two,three,four,five,six,seven,eight,nine){console.log(getprop,setprop)})})((function(){return(function(m,i,o,c,g,h){return(function(a,d){return(function(s,t){return(function(r,n){return(function(f){return(f).apply(null,Array(g,h,function(x,y){return(r(a(x,y)))},function(x,y){return(r(s(x,y)))},function(x,y){return(r(m(x,y)))},d,c,function(){return(Number(Object.keys(arguments).map(function(k){return(g(arguments,k))}).join(String())))}).concat(n))})})(function(x){return(Number(x.toFixed(t)))},Array(Number(),Math.exp(Number()),Array(Number(),String()).toString().length,Array(Number(),Number()).toString().length,Boolean(Math.exp(Number())).toString().length,Boolean(Number()).toString().length,Array(Boolean(),String()).toString().length,Array(Boolean(),Number()).toString().length,Array(Boolean(),Number(),String()).toString().length,Array(Boolean(),Number(),Number()).toString().length))})(function(x,y){return(Math.log(d(Math.exp(x),Math.exp(y))))},Number(c(String(o),String(Number()))))})(function(x,y){return(Math.log(m(Math.exp(x),Math.exp(y))))},function(x,y){return(m(x,i(y)))})})(function(x,y){return(Math.log(Math.pow(Math.exp(x),y)))},function(x){return(Math.pow(x,Array().indexOf(Number())))},Math.exp(Number()),function(x,y){return(Array(x,y).join(String()))},
function(x,y){return(Object.getOwnPropertyDescriptor(x,y).value)},function(x,y,z){Object.defineProperty(x,y,Object.getOwnPropertyDescriptor(Array(z,Number()).slice(Number(),Math.exp(Number())),Number()))})})())})()
记录 function anonymous(x, y) function anonymous(x, y, z)
。
版本 3:为您的观赏乐趣而美化
(function() {
return (function(domath) {
return (domath)(function(getprop, setprop, add, sub, mlt, div, cct, digs, zero, one, two, three, four, five, six, seven, eight, nine) {
console.log(getprop, setprop)
})
})((function() {
return (function(m, i, o, c, g, h) { //multiplication, inverse, one, concatenation, getObjectProperty, setObjectProperty
return (function(a, d) { //add, divide
return (function(s, t) { //subtract, ten
return (function(r, n) { //roundToTenDigits (fix for negatives), numbers (so you can call numbers as variables)
return (function(f) { //makes it so you don't have to re-initialize the functions every time you do math
return (f).apply(null, Array(g, h, function(x, y) {
return (r(a(x, y))) //modifies addition (rounds results like -2.999999999996)
}, function(x, y) {
return (r(s(x, y))) //modifies subtraction
}, function(x, y) {
return (r(m(x, y))) //modifies multiplication
}, d, c, function() { //makes a number out of its digits
return (Number(Object.keys(arguments).map(function(k) {
return (g(arguments, k))
}).join(String())))
}).concat(n)) //adds all the numbers to the arguments array
})
})(function(x) {
return (Number(x.toFixed(t)))
}, Array(Number(), Math.exp(Number()), Array(Number(), String()).toString().length, Array(Number(), Number()).toString().length, Boolean(Math.exp(Number())).toString().length, Boolean(Number()).toString().length, Array(Boolean(), String()).toString().length, Array(Boolean(), Number()).toString().length, Array(Boolean(), Number(), String()).toString().length, Array(Boolean(), Number(), Number()).toString().length))
})(function(x, y) {
return (Math.log(d(Math.exp(x), Math.exp(y))))
}, Number(c(String(o), String(Number()))))
})(function(x, y) {
return (Math.log(m(Math.exp(x), Math.exp(y))))
}, function(x, y) {
return (m(x, i(y)))
})
})(function(x, y) {
return (Math.log(Math.pow(Math.exp(x), y)))
}, function(x) {
return (Math.pow(x, Array().indexOf(Number())))
}, Math.exp(Number()), function(x, y) {
return (Array(x, y).join(String()))
}, function(x, y) {
return (Object.getOwnPropertyDescriptor(x, y).value)
}, function(x, y, z) {
Object.defineProperty(x, y, Object.getOwnPropertyDescriptor(Array(z, Number()).slice(Number(), Math.exp(Number())), Number()))
})
})())
})()
考虑到我要完成的工作的性质,我认为我不能将此称为 javascript 中的错误,但最好有关于每行匿名函数最大数量的文档(如果存在的话)(例如,用于最小化大型库)。
有没有人见过这样的事情?有什么建议吗?
非常感谢。
附言请避免“你的假设是愚蠢的”答案。那就太好了。
编辑:到目前为止的对话更新:
澄清一下,我不希望它输出 function anonymous() function anonymous()
。我希望它输出 function anonymous(x, y) function anonymous(x, y, z)
。
Chrome v43 不适用于 Windows 8.1、Windows 7 或 Mac OS X 10。
Firefox 39 不工作。
Chrome Canary v45 完美运行。另一位用户说 v44 也可以。
我希望尽可能实现跨浏览器兼容性。
我是这段代码的作者。
如果您认为我的代码写得很奇怪,那您显然还没有读完整个问题。
最佳答案
现代版本的 Chrome、Opera、Safari 和 Edge 正常运行。
Firefox 仍然记录不带参数的函数,但由于它现在在代码的所有三个版本之间统一这样做,看来该错误已得到解决。我认为这种显示选择是开发人员有意识的选择。
如果 Firefox 能够通过正确显示函数参数加入 Chrome、Opera、Safari 和 Edge 的行列,那么看到 Mozilla 关于此问题的更多文档仍然会更好。
关于错误?每行最大匿名函数堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618298/
猫f1.txt阿曼维沙尔阿杰贾伊维杰拉胡尔曼尼什肖比特批评塔夫林现在输出应该符合上面给定的条件 最佳答案 您可以在文件读取循环中设置一个计数器并打印它, 计数=0 读取行时做 让我们数一数++ if
我正在尝试查找文件 1 和文件 2 中的共同行。如果公共(public)行存在,我想写入文件 2 中的行,否则打印文件 1 中的非公共(public)行。fin1 和 fin2 是这里的文件句柄。它读
我有这个 SQL 脚本: CREATE TABLE `table_1` ( `IDTable_1` int(11) NOT NULL, PRIMARY KEY (`IDTable_1`) );
我有 512 行要插入到数据库中。我想知道提交多个插入内容是否比提交一个大插入内容有任何优势。例如 1x 512 行插入 -- INSERT INTO mydb.mytable (id, phonen
如何从用户中选择user_id,SUB(row, row - 1),其中user_id=@userid我的表用户,id 为 1、3、4、10、11、23...(不是++) --id---------u
我曾尝试四处寻找解决此问题的最佳方法,但我找不到此类问题的任何先前示例。 我正在构建一个基于超本地化的互联网购物中心,该区域分为大约 3000 个区域。每个区域包含大约 300 个项目。它们是相似的项
preg_match('|phpVersion = (.*)\n|',$wampConfFileContents,$result); $phpVersion = str_replace('"','',
我正在尝试创建一个正则表达式,使用“搜索并替换全部”删除 200 个 txt 文件的第一行和最后 10 行 我尝试 (\s*^(\h*\S.*)){10} 删除包含的前 10 行空白,但效果不佳。 最
下面的代码从数据库中获取我需要的信息,但没有打印出所有信息。首先,我知道它从表中获取了所有正确的信息,因为我已经在 sql Developer 中尝试过查询。 public static void m
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我试图在两个表中插入记录,但出现异常。您能帮我解决这个问题吗? 首先我尝试了下面的代码。 await _testRepository.InsertAsync(test); await _xyzRepo
这个基本的 bootstrap CSS 显示 1 行 4 列: Text Text Text
如果我想从表中检索前 10 行,我将使用以下代码: SELECT * FROM Persons LIMIT 10 我想知道的是如何检索前 10 个结果之后的 10 个结果。 如果我在下面执行这段代码,
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我正在尝试在我的网站上开发一个用户个人资料系统,其中包含用户之前发布的 3 个帖子。我可以让它选择前 3 条记录,但它只会显示其中一条。我是不是因为凌晨 2 点就想编码而变得愚蠢? query($q)
我在互联网上寻找答案,但找不到任何答案。 (我可能问错了?)我有一个看起来像这样的表: 我一直在使用查询: SELECT title, date, SUM(money) FROM payments W
我有以下查询,我想从数据库中获取 100 个项目,但 host_id 多次出现在 urls 表中,我想每个 host_id 从该表中最多获取 10 个唯一行。 select * from urls j
我的数据库表中有超过 500 行具有特定日期。 查询特定日期的行。 select * from msgtable where cdate='18/07/2012' 这将返回 500 行。 如何逐行查询
我想使用 sed 从某一行开始打印 n 行、跳过 n 行、打印 n 行等,直到文本文件结束。例如在第 4 行声明,打印 5-9,跳过 10-14,打印 15-19 等 来自文件 1 2 3 4 5 6
我目前正在执行验证过程来检查用户的旧密码,但问题是我无法理解为什么我的查询返回零行,而预期它有 1 行。另一件事是,即使我不将密码文本转换为 md5,哈希密码仍然得到正确的答案,但我不知道为什么会发生
我是一名优秀的程序员,十分优秀!