首页 > 其他分享 >js 变量提升

js 变量提升

时间:2024-09-12 14:28:20浏览次数:1  
标签:myFunction 变量 作用域 js 提升 world 声明 Hello

JavaScript中的变量提升(hoisting)是指在代码执行之前,变量和函数的声明会被提升到作用域的顶部。这意味着你可以在声明之前使用变量和函数,而不会引发错误。

变量提升的规则如下:

  1. 变量声明(使用var关键字)会被提升到其所在作用域的顶部,并初始化为undefined
  2. 函数声明会被提升到其所在作用域的顶部,并可以在声明之前调用。

以下是一个变量提升的示例:

console.log(myVariable); // 输出: undefined
var myVariable = "Hello, world!";
console.log(myVariable); // 输出: Hello, world!

console.log(myFunction()); // 输出: Hello, world!
function myFunction() {
  return "Hello, world!";
}


console.log(myFunction()); // 报错: myFunction is not a function var myFunction = function () {   return "Hello, world!"; }; console.log(myFunction()); // 输出: Hello, world!

在这个例子中,myVariable变量和myFunction函数的声明都被提升到作用域的顶部。因此,在变量和函数声明之前,我们可以使用它们。

需要注意的是,虽然变量提升使得在声明之前使用变量和函数成为可能,但是只有声明被提升,而不是赋值。变量的赋值仍然会按照代码的顺序进行。

此外,使用letconst声明的变量也会被提升,但它们存在块级作用域,而不是函数作用域。在块级作用域中,变量在声明之前是不可访问的。

总结来说,JavaScript中的变量提升是一种语言特性,它使得在声明之前使用变量和函数成为可能。但是,为了代码的可读性和维护性,建议在使用之前先进行变量和函数的声明。

如果你还有其他问题,请随时提问。

 

 

var 声明的方法,也会提升,但是是一个undefined无法调用。

var myfunction = funciton (){

     return 'hello world'

}

这种方式可以正常调用:

function myFunction() {
  return "Hello, world!";
}

标签:myFunction,变量,作用域,js,提升,world,声明,Hello
From: https://www.cnblogs.com/ygyy/p/18410096

相关文章

  • Mybatis读取和存储json类型的数据
    目录一、测试使用JSONObject来获取json二、设置@TableName的autoResultMap为true,@TableField的typeHandler为JacksonTypeHandler.class三、设置xml当中的resultMap四、JacksonTypeHandler讲解五、新增假如是JSONObject异常问题六、遇到转义的问题不管数据库当中是以json还是longte......
  • SolidJS-每日小知识(9/12)
    知识介绍对SVG元素实现拖拽视图的功能代码分析对于SVG元素的viewBox属性(x,y,w,h),我们设置x,y作为信号量const[boxLocation,setboxLocation]=createSignal({x:0,y:0});添加拖拽所需的变量和事件letisDragging=false;letstartX:number;letst......
  • 通过打包 Flash Attention 来提升 Hugging Face 训练效率
    简单概述现在,在HuggingFace中,使用打包的指令调整示例(无需填充)进行训练已与FlashAttention2兼容,这要归功于一个最近的PR以及新的DataCollatorWithFlattening。它可以在保持收敛质量的同时,将训练吞吐量提高多达2倍。继续阅读以了解详细信息!简介在训练期间,对小......
  • C++ 变量初始化
    列表初始化当用于内置类型的变量时,这种初始化形式有一个重要特点:如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器将报错:longdoubleld=3.1415926536;inta{ld},b={ld};//错误:转换未执行,因为存在丢失信息的危险intc(ld),d=ld;//正确:转换执行,且确实丢失了......
  • 【开源免费】基于SpringBoot+Vue.JS在线视频教育平台(JAVA毕业设计)
    本文项目编号T027,文末自助获取源码\color{red}{T027,文末自助获取源码}......
  • 【开源免费】基于SpringBoot+Vue.JS校园管理系统(JAVA毕业设计)
    本文项目编号T026,文末自助获取源码\color{red}{T026,文末自助获取源码}......
  • Node.js 实现流式渲染
    什么是流式渲染?流式渲染的核心理念是将HTML文档分割成小块(chunk),并逐步地发送给客户端,而非等待整个页面完整生成后再进行传输。这种方式能够极大地提升用户的初始加载体验,特别是在网络条件不佳或者页面内容复杂的情况下。流式渲染并非新兴技术,早在90年代,网页浏览器就已开......
  • vite如何打包vue3插件为JSSDK
    安装vitenpmcreatevite@latest你还可以通过附加的命令行选项直接指定项目名称和你想要使用的模板。例如,要构建一个Vite+Vue+ts项目,运行:#npm7+,需要添加额外的--:npmcreatevite@latestmy-vue-app----templatevue-ts查看create-vite以获取每个模板的更多细......
  • uniapp js 划消小游戏 2.0
    1.效果图  代码:game.vue  <template> <viewclass="wrap">  <!--<imgclass="imgBG"src="@/static/image/hxBG.png"alt=""/>-->  <imageclass="imgBG"mode="aspectFill&q......
  • js代理函数
    consthook=true,compress=truedeleteprocessdeleteglobaldeleterequiredeletemoduledeleteBufferdelete__dirnamedelete__file__consthook_funcs=['toString','hasOwnProperty']constconstructor_excepts=[Date,RegExp]......