var js=function(){}和function js(){}的区别

在Javascript中,函数及变量的声明都将被提升到函数的最顶部,也就是说我们可以先使用后声明,
但函数表达式和变量表达式只是将函数或者变量的声明提升到函数顶部,函数表达式和变量的初始化将不被提升

var js=function(){} 这种叫做函数表达式 必须先定义后使用

function js(){}这种是函数声明 可以先使用后定义 它会对函数的声明进行一个提升

举个例子

1

2

3

4

fun();//hello,world哥

function fun(){    

    console.log("hello,world哥");

}

方法先使用后声明这显然是没有问题的、那么我们接着看函数表达式

1

2

3

4

var fun=function(){

    console.log("本事啦,我的弟");

}

fun();//本事啦,我的弟

显然没有任何问题,我们把声明和使用颠倒位置

1

2

3

4

fun();

var fun=function(){

    console.log("本事啦,我的弟");//Uncaught TypeError: fun is not a function

}

我们发现报错了,但如果我们直接使用fun则会报一个”Uncaught ReferenceError: fun is not defined”的错误(和不声明fun报错是不一样的),其实fun也是一个变量,只不过他是function(){console.log(“本事啦,我的弟”);}的一个引用,fun的声明被提升了,但是初始化没有被提升。

再给大家来一个比较有趣的关于提升的例子

1

2

3

4

5

6

var a=1;

(function(){    

    console.log(a); 

    var a=2;    

    console.log(a);

})();

大家认真的思考一下、打印结果是什么?
正确答案:undefined 2 大家应该想的是1,2 其实这个结果就是变量提升的原因

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是用来预览和放大图片的。`previewImage` 函数用于选择图片文件后预览它,并将其添加到对应的输入框之外。`showPopup` 函数用于在单击预览图片时显示一个弹出窗口,并允许对图片进行缩放和拖动操作。 下面是完整的代码示例: ```javascript function previewImage(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { var img = document.createElement("img"); img.src = e.target.result; img.alt = "照片"; img.onclick = function () { showPopup(img.src); }; // 隐藏原始的 input 元素 input.style.display = "none"; // 添加图片到 input 元素的父节点 input.parentNode.appendChild(img); }; reader.readAsDataURL(input.files[0]); } } function showPopup(imageSrc) { var popup = document.createElement("div"); var popupImg = document.createElement("img"); var scale = 1; var isDragging = false; var startX, startY, translateX, translateY; popup.className = "popup"; popup.onclick = function () { document.body.removeChild(popup); }; popupImg.src = imageSrc; popupImg.className = "popup-image"; popupImg.onmousedown = function (e) { isDragging = true; startX = e.clientX; startY = e.clientY; translateX = 0; translateY = 0; }; popupImg.onmousemove = function (e) { if (isDragging) { var deltaX = e.clientX - startX; var deltaY = e.clientY - startY; translateX += deltaX; translateY += deltaY; startX = e.clientX; startY = e.clientY; popupImg.style.transform = `translate(${translateX}px, ${translateY}px) scale(${scale})`; } }; popupImg.onmouseup = function () { isDragging = false; }; popupImg.onwheel = function (e) { e.preventDefault(); var delta = Math.max(-1, Math.min(1, e.deltaY)); scale += delta * 0.1; scale = Math.max(0.1, scale); popupImg.style.transform = `translate(${translateX}px, ${translateY}px) scale(${scale})`; }; popup.appendChild(popupImg); document.body.appendChild(popup); } ``` 请确保在 HTML 文件中正确引入相关的 CSS 样式,这样弹出窗口和图片的显示效果才能正常展示。 希望这个解答对你有帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值