我有"1/7"并希望获得十进制等值.当然我可以使用eval("1/7"),但考虑到eval是邪恶的,任何其他方法?
我目前正在开发一个JavaScript加载项,它从API接收JSON.到目前为止,我很好地检索JSON然后用于eval()将此JSON转换为JavaScript对象.这就是问题的起点.
我的JSON包含'#text'属性.我评估了JavaScript对象并发现它也有这个'#text'属性,但我无法调用该属性,因为不接受带有hash-tags的变量.
我知道两种可能的解决方案(用于eval()转换为数组或删除hast-tag),但我更喜欢调用该属性.有任何想法吗?谢谢.
我正在尝试使用一个简单示例的eval函数:
<% a = 5 %>
<% b = 4 %>
<%= eval("((a+b)/b)") %>
Run Code Online (Sandbox Code Playgroud)
我希望结果为2.25,但上面给出2.下面的代码给出了2.25,但不是很优雅
<% a = 5 %>
<% b = 4 %>
<%= eval("((a.to_f+b.to_f)/b.to_f)") %>
Run Code Online (Sandbox Code Playgroud)
如何让eval以更好的方式返回带小数位的数字?
我的网页上有一个转发器,如下所示
<asp:Repeater runat="server" ID="AccountScrollRepeater" onitemdatabound="AccountRepeater_ItemDataBound">
<ItemTemplate>
<tr class="primary-BL2" style="text-align:left">
<td style="width:70px"><asp:Label runat="server" ID="AccountNoLabel" Text='<%# Eval("AccountNo") %>'></asp:Label></td>
<td style="width:40px"><asp:HyperLink runat="server" ID="CustomerHyperLink" NavigateUrl="" Text='<%# Eval("CustId") %>' Enabled="false"></asp:HyperLink></td>
...
</tr>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
我想将CustomerHyperLink的NavigateUrl设置为以下表达式,
string.Format(AppSetting.Instance.GetSearchDetailUrl(SearchTypeEnum.Customer), '<%# Eval("CustNo") %>');
Run Code Online (Sandbox Code Playgroud)
我的问题是,不是在后面的代码中设置NavigateUrl,我如何将它放在aspx页面中?
假设我们有这样的函数:
f:Int->Int
Run Code Online (Sandbox Code Playgroud)
它为我们提供了基于输入的修改输出.
我的问题是,无论如何我可以编写这个函数,所以没有对输入进行评估吗?例如,考虑以下预期的输入和输出:
输入:3 + 2/1 + 90
输出:3 + 2/1 + 90 + 2
[编辑] 我听说过Haskell的懒惰评估,但我刚才意识到这正是我想要的,只要我不调用print,实际上在解析树中没有进行评估.
采购此代码:
a <- F
f1 <- function() a
f2 <- function() {
a <- T
eval(f1())
}
Run Code Online (Sandbox Code Playgroud)
并且呼叫f2()将返回FALSE.
如何修改的参数eval,这样f2()将返回TRUE?
我有一个程序,它生成一个python程序作为一个字符串,然后我需要执行.但是,当我尝试运行该字符串时,它会引发语法错误.
例如:
program = "self.move() self.turnRight() if x > 0: self.turnLeft() else: self.turnRight()"
eval(program)
Run Code Online (Sandbox Code Playgroud)
当这运行时,无论第二个命令是什么,都会抛出语法错误.我假设这是因为字符串缺少制表符或换行符.有没有办法在字符串通过eval命令时自动添加这些?
对于以下JSON:
var myJSON =
{ "employee": [
{
"firstName": "John",
"lastName": "Doe",
"Age": 20
},
{
"firstName": "Jane",
"lastName": "Moe",
"Age": 35
},
{
"firstName": "Mike",
"lastName": "Poe",
"Age": 28
}
]
};
Run Code Online (Sandbox Code Playgroud)
假设我需要通过传递索引和属性名来获取特定值.例如,employee[1].lastName会给我值"Moe".但是,我有一些粗略的时间搞清楚什么是一个简单的JavaScript函数,它将这两个值作为输入并将值作为输出返回.以下代码似乎不起作用:
function getValue(index, attrName) {
var val = eval("myJSON.employee[" + index + "]." + attrName); // is using eval() even a sound approach?
return val;
}
Run Code Online (Sandbox Code Playgroud) 我试图命名数据框的列,但动态选择数据框.知道为什么这不起作用吗?下面是一个例子,但在我的实际情况中,我得到了一个不同的错误.截至目前,我只想知道导致错误的原因:
文件错误(文件名,"r"):无法打开连接
另外:警告消息:
在文件中(文件名,"r"):
无法打开文件'df':没有这样的文件或目录
#ASSIGN data frame name dynamically
> assign(as.character("df"), data.frame(c(1:10), c(11:20)))
>
#IT WOrked
> df
c.1.10. c.11.20.
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15
6 6 16
7 7 17
8 8 18
9 9 19
10 10 20
>
#Call the data frame dynamically, it works
> eval(parse(text = c("df")))
c.1.10. c.11.20.
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15 …Run Code Online (Sandbox Code Playgroud) 我刚刚在Chrome Developer Tool中运行了以下功能,但没有任何反应.那么正在发生什么 - 这将是一个无限循环?
function foo() {
eval( arguments.callee );
}
foo( );
Run Code Online (Sandbox Code Playgroud)
如果我将功能修改为:
function foo() {
console.log('Called');
eval( arguments.callee.toString() );
}
foo();
Run Code Online (Sandbox Code Playgroud)
输出:
Called
Run Code Online (Sandbox Code Playgroud)
输出只打印一次,所以发生了什么?
eval ×10
javascript ×4
json ×2
r ×2
asp.net ×1
columnname ×1
dataframe ×1
hashtag ×1
haskell ×1
python ×1
ruby ×1
syntax-error ×1