js变量 Love The Way You Lie 2021-09-07 06:02 304阅读 0赞 ### 目录 ### * 一、什么是变量 * * 1.变量的命名 * 2.变量的书写 * 3.变量的声明提升 * 二、变量的分类 # 一、什么是变量 # 在js中,变量其实就是用来存储数据的。 ## 1.变量的命名 ## 1.变量命名必须以字母或是下标符号”\_”或者”$”为开头,不能以数字开头,变量名中不允许使用空格。 2.不能用使用js语言中保留的关键字及保留符号作为变量名,变量的名称要有意义。 3.变量名长度不能超过 255 个字符。 4.汉语可以作为变量名。但是不建议使用!!! 5.变量的字母是区分大小写的。arr和ARR是不一样的的。 6.变量创建后不立即赋值,此时的值是undefined。 7.长命名一般以驼峰命名法命名。比如用户姓名:userName。 ## 2.变量的书写 ## **1.这是创建时赋值** <script> var userName = “吮指鸡”; </script> 2.先创建后赋值。 <script> var userName; userName = “吮指鸡”; </script> 3.多个变量定义 <script> var userName,passWord; </script> 多个变量定义以逗号隔开 ## 3.变量的声明提升 ## **1.什么是变量的声明提升** JS的解析器在页面加载的时候,即预解析的时候,候会先把变量和函数提升,再给变量赋值,赋值还在原来的地方,但是定义变量提到当前作用域的最前面。但要是使用变量在定义变量之后没有影响,但是使用变量在定义变量之前就会有影响。 举个简单的例子: console.log(a); var a=1 这样的一个语句,照理来说打印的应该是1,其实不是,打印的是undefined。因为这里就发生了变量的声明提升,使用变量在在定义变量之前。 会变成 var a ; console.log(a); a=1 这样的一个顺序来执行,在打印的时候a是还没赋值的,所以是undefined。 还有就是在函数中,也会发生变量的声明提升 var a=1; function test(){ console.log(a); var b=2; }; test(a) 在函数里出现了使用变量在定义变量前,此时的变量的声明提升,就会影响结果了。 var a=1; function test(){ var a ; console.log(a); a=2; }; test(a) 函数不会使用实参a,是因为在函数里,已经有了一个var 定义的局部变量了。所以只会使用函数内部的a,此时是undefined,要是a前面的var 取掉,打印的a就是1了。 **2.函数的变量提升** 函数使用function方式定义时,使用在定义前,发生的声明提升不会影响。 test('吮指鸡'); function test(name){ console.log(name); } 此时能正常打印”吮指鸡“,是因为函数声明提升后代码变成了 function test(name){ console.log(name); } test('吮指鸡'); 使用在定义之后了,所以能正常打印,函数提升后,会预先运行一遍里面的逻辑。 但是以函数表达式的方式这样的顺序会造成错误。 test'吮指鸡'); var test= function(name){ console.log(name); } 这种函数的定义是以变量的赋值方式定义的,会以变量的声明提升来运行 var test; test'吮指鸡'); test= function(name){ console.log(name); } 这时候test还不是一个方法,所以会报错。 以函数声明的方式进行的声明提升,会把整个函数体提升到顶部,所以没什么问题,而以表达式进行的函数,会进行变量的声明提升,只提升了函数名,没提升函数体。所以会报错。 要是两个方法都写了,会以谁现在前面,谁第一个提升到顶部。 **3.函数和变量同名时** 函数会把变量覆盖掉 综上:最好先定义好函数或变量,再进行使用,以防出错。 **4.什么是预解析** JS的解析器在页面加载的时候,首先检查页面上语法的错误,把变量提升上来,成员变量只提升变量名,不提升变量值,所以这时候的变量是没有值的,函数是所有内容全部提升。(function直接定义的) 作用: 1.解析语法错误 2.变量声明提升的时候和函数整体提升(变量提升时只提升变量名,不提升变量值) # 二、变量的分类 # **1.全局变量** 在js文件任何地方都能访问到的变量叫全局变量。 1.在js文件除了函数里,用 var 或者没有var定义的变量 2.函数内部不带var 的变量,但必须运行了这个函数,外面才能访问到这个变量,直接写,不运行这个函数,外面是访问不到这个变量的。 全局变量的特点: 1.任何地方都能访问到。 2.不能被delete删除 3.函数内不带var 的变量,会先找函数外部有没有定义这个变量,沿着作用域链一直找,没找到就会将这个变量绑定到window上,所以说一点要运行才能访问到这个变量,不然是没有绑定到window对象上的。 4.全局变量是绑定到window对象上的。 5.网页关闭才会销毁全局变量。 **2.局部变量** 在规定地方才能访问到的变量叫局部变量 1.函数内部带var的变量。 2.形参。 局部变量的特点: 1.只能在指定地方访问 2.出了作用域范围就销毁了。 **3.隐式全局变量** 没搞懂 回来写 **4.手动解除变量占用** 给变量赋值null即可。
相关 变量(JS) 变量(JS) <!DOCTYPE html> <html lang="en"> <head> <meta charset 我就是我/ 2023年10月03日 13:57/ 0 赞/ 27 阅读
相关 js变量提升(js变量提升优先级) javascript 变量增加属性 额,楼主javascript中定义声明方法的参数前面是不需要添加var的,试着这样修改 var user = new Object 阳光穿透心脏的1/2处/ 2023年09月26日 14:47/ 0 赞/ 226 阅读
相关 [JS] 变量提升 猜猜下面的代码会输出什么东东? var foo = 1; var foobar = function() { cons ゞ 浴缸里的玫瑰/ 2023年06月24日 14:26/ 0 赞/ 99 阅读
相关 JS学习笔记-JS变量 JS的变量类型 1.基本变量类型 number 数值型 boolean 布尔型:true/false string 字符串,没有单个的字符 向右看齐/ 2023年06月18日 06:53/ 0 赞/ 68 阅读
相关 js:全局变量 题目:给定的 js 代码中存在全局变量,请修复 function globals() { myObject = { name : 红太狼/ 2022年06月18日 07:43/ 0 赞/ 331 阅读
相关 js变量提升 变量作用域与解构赋值 阅读: 159079 -------------------- 在JavaScript中,用`var`申明的变量实际上是有作用域的。 如果一个变量 系统管理员/ 2022年05月15日 12:20/ 0 赞/ 298 阅读
相关 js变量提升 1. 变量提升 ES6之前我们一般使用var来声明变量,提升简单来说就是把我们所写的类似于var a = 123;这样的代码,声明提升到它所在作用域的顶端去执行,到我们代码 野性酷女/ 2022年03月07日 00:54/ 0 赞/ 319 阅读
相关 js变量 目录 一、什么是变量 1.变量的命名 2.变量的书写 3.变量的声明提升 二、变量的分类 一、什么是变量 在j Love The Way You Lie/ 2021年09月07日 06:02/ 0 赞/ 305 阅读
相关 js 变量 变量类型 只有var var a=123; var a1="js"; var a2='k'; var a3=t 我不是女神ヾ/ 2021年07月24日 14:33/ 0 赞/ 358 阅读
还没有评论,来说两句吧...