javascript - 关于作用域的问题?

查看:67
本文介绍了javascript - 关于作用域的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<script src='jquery-3.1.0.min.js'></script>
<script type="text/javascript">
var mycanvas=document.getElementById("mycanvas");
var mycvs=mycanvas.getContext("2d");
mycvs.width=window.innerWidth;
mycvs.height=window.innerHeight;
var originX=400;
var originY=800;
$(window).mousedown(function(e){

var positionX=e.offsetX;
var positionY=e.offsetY;
paint();

})

function paint(){

mycvs.beginPath();
mycvs.lineWidth=1;
mycvs.strokeStyle="black";
mycvs.moveTo(originX,originY);
mycvs.lineTo(positionX,positionY);
mycvs.storke();

}

positionX为什么是为定义?关于paint()这个函数是不是在鼠标点击事件调用它之前,计算机也会读取代码中的内容?

解决方案

老兄,你的

var positionX=e.offsetX;
var positionY=e.offsetY;

都是局部变量,你在下面使用,当然不能用呀。
把var positionX和var positionY移动到外面声明

var positionX,positionY;
$(window).mousedown(function(e){

positionX=e.offsetX;
positionY=e.offsetY;
paint();
})

或者把positionX和positionY以参数的形式传入paint(),如

$(window).mousedown(function(e){

var positionX=e.offsetX;
var positionY=e.offsetY;
paint( positionX, positionY );
})
function paint( px, py ){

mycvs.beginPath();
mycvs.lineWidth=1;
mycvs.strokeStyle="black";
mycvs.moveTo(originX,originY);
mycvs.lineTo( px, py );
mycvs.storke();
}

这篇关于javascript - 关于作用域的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆