我有一个函数CreateTable并生成常量变量。我想访问其他函数中的变量。我点击它调用的函数generatePDF的按钮。在那里,我想检查generateTable函数内部生成的伪值的长度。现在得到错误消息"Uncaught ReferenceError:dummy is not defined">
$(document).ready(function(){
generateTable();
function generateTable() {
const dummy = [{
"key": "value",
"key1": "value1"
}]; //created by some other fnction;
}
}
function generatePDF() {
if (dummy.length) {
//do sone thing
alert('hello');
}
}
<button onclick="generatePDF()">Make PDF</button>
您可以在文档就绪函数之外声明一个global
var,一旦DOM
就绪,它就会变为可用。
运行下面的代码段。
//Global Var
let dummy;
//Document ready start here
$(document).ready(function() {
function generateTable() {
dummy = [{
"key": "value",
"key1": "value1"
}]; //created by some other fnction;
}
generateTable();
});
//Outside document ready
function generatePDF() {
if (dummy.length) {
//do sone thing
alert('hello');
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick="generatePDF()">Make PDF</button>
这是因为变量"伪";不是全局变量。它是函数generateTable中的一个局部变量。
let dummy;
generateTable();
function generateTable() {
dummy = [{ key: "value", key1: "value1" }]; //created by some other fnction;
}
function generatePDF() {
if (dummy.length) {
//do sone thing
alert("hello");
}
}
<button onclick="generatePDF()">Make PDF</button>
这里将虚拟对象转换为全局变量
首先将函数外的变量声明为;
const dummy;
然后编写其他代码。现在它可以在全球范围内使用。
伪值只能在此函数generateTable中使用。如果要使用伪值,则应定义一个全局变量。
$(document).ready(function(){
var x;
x=generateTable();
function generateTable() {
const dummy = [{
"key": "value",
"key1": "value1"
}]; //created by some other fnction;
return(dummy);
}
}
function generatePDF() {
if (x.length) {
//do sone thing
alert('hello');
}
}