各场景下的this
this的意思:百度翻译为:这、这么、本
在JavaScript中,表示当前对象的引用关键字,没有特殊含义。
在一个方法中,this表示该方法所属的对象。
如果单独使用,this表示全局对象。
在函数中,this表示全局对象。如果为严格模式,this为undefined。
在事件中,this表示接受事务的对象。
例:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>JavaScript之this关键字</title> 6 </head> 7 <body> 8 <h1>javascript <b>this</b>关键字</h1> 9 <p id="demo"></p> 10 <script> 11 // 创建对象 12 var person={ 13 firstName: "John", 14 lastName: "Doe", 15 id: "1112", 16 fullName:function (){ 17 return this.firstName+""+this.lastName; 18 } 19 } 20 // 回显对象数据 21 document.getElementById("demo").innerHTML=person.fullName(); 22 </script> 23 </body> 24 </html>
注意:在对象中的方法名格式为方法名:function(){
一些代码
}
let关键字
let声明的变量只在其所在代码块中生效。
const声明一个只读变量,一但声明,变量值就不能改变。
全局变量:
在函数外声明的变量都是全局变量,全局变量在JavaScript程序的任何地方都可以访问。
1 var carName = "Volovo" 2 //这里声明全局变量,并可以访问 3 function myFunction(){ 4 //这里也可以访问全局变量 5 6 }
局部变量:
在函数内部声明的变量只能在函数内部访问。
// 这里不能使用 carName 变量 function myFunction() { var carName = "Volvo"; // 这里可以使用 carName 变量 } // 这里不能使用 carName 变量
注:函数内使用var声明的变量则是局部变量,只能在函数内访问,不适用var声明的则是全局变量。
let声明的变量只能在let代码块所在的{}中有效,在{}外不能访问。
在相同的作用域或块级作用域中,不能使用 let 关键字来重置 var 关键字声明的变量:
1 var x = 2; // 合法 2 let x = 3; // 不合法 3 4 { 5 var x = 4; // 合法 6 let x = 5 // 不合法 7 }
在相同的作用域或块级作用域中,不能使用 let 关键字来重置 let 关键字声明的变量:
1 let x = 2; // 合法 2 let x = 3; // 不合法 3 4 { 5 let x = 4; // 合法 6 let x = 5; // 不合法 7 }
let 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的:
1 let x = 2; // 合法 2 3 { 4 let x = 3; // 合法 5 } 6 7 { 8 let x = 4; // 合法 9 }
const关键字
constant:常数
const用于声明一个或者多个常量,声明时必须进行初始化,且初始化后不能修改。
1 const PI = 3.141592653589793; 2 PI = 3.14; // 报错 3 PI = PI + 10; // 报错
const关键字和let类似,都是块级作用域,都不能在相同的作用域的其他变量或函数同名、
不同点:const声明的常量必须初始化,let声明的变量不用;
const常量值不能通过再赋值修改,也不能再次声明,let声明的变量可以修改。
1 // 错误写法 2 const PI; 3 PI = 3.14159265359; 4 5 // 正确写法 6 const PI = 3.14159265359;
1 var x = 10; 2 // 这里输出 x 为 10 3 { 4 const x = 2; 5 // 这里输出 x 为 2 6 } 7 // 这里输出 x 为 10
const并非真正的常量,它定义一个常量引用一个值。使用const定义的数组或对象, 是可以改变的。
1 // 创建常量对象 2 const car = {type:"Fiat", model:"500", color:"white"}; 3 4 // 修改属性: 5 car.color = "red"; 6 7 // 添加属性 8 car.owner = "Johnson";
但不能对常量重新赋值:
st car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; // 错误
标签:const,作用域,JavaScript,关键字,let,var,声明 From: https://www.cnblogs.com/wenzm/p/17077229.html