各场景下的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"}; // 错误

JavaScript之this、let、const关键字的更多相关文章

  1. javascript中的var,let,const关键字

    文章:JavaScript 中 var 和 let 和 const 关键字的区别 比较全面的文章.

  2. ECMAScript6之let与const关键字

    let关键字 let关键字和var关键字一样,都是用来声明变量的,但是和var不同的是,let关键字声明的变量仅在自己的块级作用域范围内发挥作用. 我们来比较下面两段代码 var arr = new ...

  3. JavaScript ES6 let、const

    在ES6中,增加了2个声明变量的关键字:let 和 const.在这里将详细介绍let与var的区别.Babel对let的处理以及const的简单使用. 1. let 在ES6规范中增加了 let 关 ...

  4. JS let和const关键字

    ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const. Let关键字 1.用于作用域:块作用域,循环作用域,函数作用域,全局作用域, 在 ES2015 之前,Java ...

  5. const关键字:终于拥有真正的常量声明语句

    本文首发于个人网站:const关键字:终于拥有真正的常量声明语句 你好,今天大叔想和你唠扯唠扯 ES6 新增的关键字 -- const.在说 const 关键字之前,大叔先和你唠唠大叔自己对 cons ...

  6. ES6 let const关键字

    在es6中,引入了let和const关键字: 1.letES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. (1)在块级作用域里有效(比 ...

  7. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  8. C++中const关键字的使用总结

    C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...

  9. final关键字+const关键字

    final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...

  10. C++学习11 类和new、delete操作符 类与const关键字

    如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...

随机推荐

  1. 用 Java?试试国产轻量的 Solon v1.11.4(带视频)

    一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...

  2. 配置php-fpm识别php文件访问

    以前是装的集成环境,没有想到装完Nginx + PHP + MySQL 启动nginx 服务,出现页面: 如果访问120.25.216.6/index.php 就会变成下载 之所以会这样是因为2个原因 ...

  3. Django TypeError at /login/ 'bool' object is not callable

    代码: def login(request): if request.POST: username = request.POST.get('username') password = request. ...

  4. 字符编码:Unicode & UTF-16 & UTF-8

    ASCII码 使用一个字节(8位),对128个字符进行编码: 最高位始终为0: 码数范围为0000_0000(0x00)到0111_1111(0x7F): Unicode 开始的编码设计 使用两个字节 ...

  5. [python]《Python编程快速上手:让繁琐工作自动化》学习笔记3

    1. 组织文件笔记(第9章)(代码下载) 1.1 文件与文件路径 通过import shutil调用shutil模块操作目录,shutil模块能够在Python 程序中实现文件复制.移动.改名和删除: ...

  6. python之路26 面向对象魔法方法、元类、元类定制类、对象的产生行为 __new__方法

    面向对象的魔法方法 魔法方法:类中定义的双下方法都称为魔法方法 不需要人为调用 在特定的条件下会自动触发运行 eg:__init__创建空对象之后自动触发给对象添加独有的数据 1.__init__ 对 ...

  7. P5934 [清华集训2012]最小生成树

    简要题意 给你一个 \(N\) 个点,\(M\) 条边的 无向连通 带权图.给定一条边 \((u,v,L)\),请问需要在原图中删除多少条边,使得将 \((u,v,L)\) 插入图后,它既可能在最小生 ...

  8. Thread和Runnable的区别-匿名内部类方式实现线程的创建

    Thread和Runnable的区别 如果一个类继承Thread ,则不适合资源共享.但是如果实现了Runable接口的话,则很容易的实现资源共享. 总结: 实现Runnable接口比继承Thread ...

  9. 结对项目总结 -- 基于Qt开发的win10桌面应用

    担任角色 在这次结对项目中,由于采用了我的个人项目作为参考,所以我继续担任后端开发的角色. 开发环境 前端采用Qt Creator4.13.2 (Community) 后端采用C++ 如何复用个人项目 ...

  10. php7.3的安装以及在Apache中部署php

    安装 php7.3 1.进入php官网:https://www.php.net/downloads.php 2.点击 Windows downloads 3.下载压缩包 4.将下载好的压缩包解压,可选 ...