JavaScript / EJS范围混淆
JavaScript / EJS scope confusion
有一个关于JavaScript作用域的问题日志,但没有一个解决我的确切问题。
我如何访问我的脚本中的user
对象,为什么它不可见?
我的应用程序呈现一个. js页面。考虑下面的代码:
<html>
<body>
...some stuff
<% if (user.local.email) { %> <!-- WORKS PERFECTLY -->
... some stuff
<% } %>
<script>
$(document).ready(function() {
console.log(user); //-- DOES NOT WORK
} //-- REFERENCE ERROR: USER NOT DEFINED
</script>
</body>
</html>
我不明白为什么user
在页面的一部分可见,而不是在它下面的脚本?
这里很好地解释了答案
实际上,从这个答案中,您捕获了值:
<script type='text/javascript'>
var rows =<%-JSON.stringify(data)%>
</script>
EJS用于服务器端脚本编写, JavaScript 用于客户端脚本编写。所以一个变量在另一个中是不可用的。EJS在服务器上执行,所有声明的变量在执行后都消失了。然后将页面返回给浏览器,浏览器随后执行Javascript,因此Javascript中不可用EJS变量。
但是,如果你想这样做,你可以这样做:
console.log(<%= user %>);
希望这能回答你的问题。
相关文章:
- 正在全局范围中查找JavaScript函数
- 如何将JSON数据导入我的ejs模板
- 如何通过数组更新角度子范围
- 主干模板:index.jst.eco到index.jst.ejs
- 循环结束/推送到数组之前在页面上呈现EJS
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- 在ejs-partial中对JSON对象进行迭代
- HTML范围:动态设置值属性
- "实例范围”;TypeScript类的getter/setter
- jquery日期选择器年份范围默认值
- Jpgraph:如何手动设置X轴和Y轴的范围
- EJS中的Angularjs-Ui路由器参数
- 在对象数组中查找多个值的d3范围
- 动态加载angularjs并生成控制器和范围
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在Materialize Calendar中设置年份范围
- 在MVVM视图模型中处理应用程序范围的元素
- setInterval游戏循环的范围问题
- 与EJS和范围作斗争——并非如此——“;本地“;变量
- JavaScript / EJS范围混淆