Javascript 这个变量来自哪里?
我从一本书中看到了这个例子 我不明白的是这个区间变量是从哪里来的 它不是在数据块内部定义的,您不能仅仅通过给它赋值来创建变量 它是javascript中的全局变量吗Javascript 这个变量来自哪里?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我从一本书中看到了这个例子 我不明白的是这个区间变量是从哪里来的 它不是在数据块内部定义的,您不能仅仅通过给它赋值来创建变量 它是javascript中的全局变量吗 const POMODORO_STATES={ 工作:“工作”, 休息:“休息” }; 常量状态={ 开始:“开始”, 停止:“停止”, 暂停:“暂停” }; 常数工作时间长度单位为分钟=1; 常数休息时间长度单位为分钟=5; 新Vue({ el:“#应用程序”, 数据:{ 状态:STATES.STOPPED, 分钟:工作时间长度
const POMODORO_STATES={
工作:“工作”,
休息:“休息”
};
常量状态={
开始:“开始”,
停止:“停止”,
暂停:“暂停”
};
常数工作时间长度单位为分钟=1;
常数休息时间长度单位为分钟=5;
新Vue({
el:“#应用程序”,
数据:{
状态:STATES.STOPPED,
分钟:工作时间长度(单位:分钟),
秒:0,,
pomodoroState:POMODORO_美国公司,
时间戳:0
},
计算:{
标题:功能(){
返回这个。pomodoroState===POMODORO_STATES.WORK?WORK!:“Rest!”
},
最小值:函数(){
如果(本分钟<10){
返回'0'+this.minute;
}
返回此。分钟;
},
第二节:功能(){
如果(本秒<10){
返回'0'+此秒;
}
把这个还给我;
}
},
方法:{
开始:函数(){
this.state=STATES.STARTED;
这个;
this.interval=setInterval(this._tick,1000);
},
暂停:函数(){
this.state=STATES.PAUSED;
clearInterval(这个.interval);
},
停止:函数(){
this.state=STATES.STOPPED;
clearInterval(这个.interval);
this.pomodoroState=POMODORO_STATES.WORK;
this.minute=工作时间长度(单位:分钟);
这个秒=0;
},
_勾选:函数(){
//如果second不是0,只需减小second
如果(本秒!==0){
这是第二次;
返回;
}
//如果秒为0,分钟不是0,则减小分钟数并将秒数设置为59
如果(this.minute!==0){
这是一分钟;
这个秒=59;
返回;
}
//如果秒为0,分钟为0,则切换工作/休息间隔
this.pomodoroState=this.pomodoroState===POMODORO_STATES.WORK?POMODORO_STATES.REST:POMODORO_STATES.WORK;
if(this.pomodoroState===POMODORO_STATES.WORK){
this.minute=工作时间长度(单位:分钟);
}否则{
this.minute=休息时间长度(单位:分钟);
}
}
}
});代码>
按钮:禁用i{
颜色:灰色;
}
波莫多罗
{{title}}
{{min}}:{{sec}
interval
变量在start
方法中定义
this.interval = setInterval(this._tick, 1000)
保持setInterval的参考,以便稍后在pause
和stop
方法中清除。让您困惑的是,为什么在state中没有定义interval
?如果某个内容未在状态中定义,并不意味着您不能在任何方法中将其附加到vue实例(this
)。您可以在javascript中合法地执行此操作,它与Vue无关
但是,此代码的作者应该在状态下声明interval
,如interval:null
,以避免混淆,这也是最佳做法。interval
变量在start
方法中定义
this.interval = setInterval(this._tick, 1000)
保持setInterval的参考,以便稍后在pause
和stop
方法中清除。让您困惑的是,为什么在state中没有定义interval
?如果某个内容未在状态中定义,并不意味着您不能在任何方法中将其附加到vue实例(this
)。您可以在javascript中合法地执行此操作,它与Vue无关
但是,该代码的作者应该在状态中声明interval
,如interval:null
,以避免混淆,这也是最佳做法。它与此状态完全相同。
,此.pomodoroState
,此.minute
,此.second
-您似乎没有问题@JaromandaX但是这些变量已经在数据对象中定义了。你需要了解如何使用对象(类)以及这个是如何工作的。它完全像这个状态,这个.pomodoroState
,这个.minute
,这个.second
-你似乎没有问题@JaromandaX,但这些变量已经在data obj中定义。您需要了解如何使用对象(类)以及如何工作