JavaScript 词法 All In One

JavaScript 词法

这部分描述了JavaScript 的词法(lexical grammar)。

ECMAScript 源码文本会被从左到右扫描,并被转换为一系列的输入元素,包括 token、控制符、行终止符、注释和空白符。ECMAScript 定义了一些关键字、字面量以及行尾分号补全的规则。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar

Hashbang

Hashbang 注释指定特定 JavaScript 解释器的路径要用于执行脚本。示例如下:

使用 #! 注释样式以指定 JavaScript 解释器。

#!/usr/bin/env node

console.log("Hello world");

ECMAScript 6 中的保留关键字

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Reserved_words

break

case

catch

class

const

continue

debugger

default

delete

do

else

export

extends

finally

for

function

if

import

in

instanceof

new

return

super

switch

this

throw

try

typeof

var

void

while

with

yield

未来保留关键字

在 ECMAScript 规格中,这些关键字被当成关键字保留。

目前它们没有特殊功能,但是在未来某个时间可能会加上。

所以这些关键字不能当成标识符使用。

这些关键字在严格模式和非严格模式中均不能使用。

enum

以下关键字只在严格模式中被当成保留关键字:

implements

interface

let

package

private

protected

public

static

以下关键字只在模块代码中被当成保留关键字:

await

之前标准中的保留关键字

这里是之前版本中的ECMAScript(1到3)中的保留关键字:

abstract

boolean

byte

char

double

final

float

goto

int

long

native

short

synchronized

transient

volatile

另外,直接量 null、true 和 false 同样不能被当成标识符号使用。

demo

ECMAScript 6 中的保留关键字

// PACKAGE
import * as PACKAGE from '../package.json';
// const PACKAGE = require('../package.json'); console.log(' package.name =', PACKAGE.name);
console.log(' package.version =', PACKAGE.version);
// package
import * as package from '../package.json';
// const package = require('../package.json'); console.log(' package.name =', package.name);
console.log(' package.version =', package.version);

http://eslint.org/docs/rules/

Parsing error: package is a reserved word in strict mode

import * as Sentry from '@sentry/browser';
import { Vue as VueIntegration } from '@sentry/integrations'; import ErrorHandler from './ErrorHandler.js'; import * as PACKAGE from '../package.json';
// const PACKAGE = require('../package.json'); // package 是保留关键字,不能使用
// import * as package from '../package.json';
// const package = require('../package.json'); console.log(' package.name =', PACKAGE.name);
console.log(' package.version =', PACKAGE.version);
// console.log(' package.name =', package.name);
// console.log(' package.version =', package.version); // const isDev = process.env.BABEL_ENV === 'development';
// const isProd = process.env.NODE_ENV === 'production';
// const env = process.env.NODE_ENV === 'production' ? true : false;
const env = process.env.NODE_ENV === 'production' ? 'prod' : 'dev'; Sentry.init({
// To set your release version
release: `$${PACKAGE.name}_${env}@${PACKAGE.version}`,
// release: `$${package.name}_${env}@${package.version}`,
// release: "my-project-name@" + process.env.npm_package_version,
dsn: 'https://666ed2b5eb51410dbe24f05e67fc999@sentry.xgqfrms//110',
integrations: [new VueIntegration({Vue, attachProps: true, logErrors: true})],
}); const errorHandler = new ErrorHandler('vue_error'); Vue.config.errorHandler = (err, vm, info) => errorHandler.onError(err, vm, info); if(env === 'dev') {
// 测试
setTimeout(() => {
console.log('window.Vue; =', window.Vue);
throw new Error(' Sentry Vue Error 测试!');
}, 3000);
}

refs

https://www.runoob.com/js/js-reserved.html



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


JavaScript 词法 All In One的更多相关文章

  1. 第二章:Javascript词法结构

    编程语言的词法结构是一套基础性的规则,用来描述你如何编写这门语言.作为语法的基础,它规定了变量名是怎么样的,如何写注释,以及语句之间是如何区分的.本节用很短的篇幅来介绍javascript的词法结构. ...

  2. 网易JS面试题与Javascript词法作用域说明

    调用对象位于作用域链的前端,局部变量(在函数内部用var声明的变量).函数参数及Arguments对象都在函数内的作用域中--这意味着它们隐藏了作用域链更上层的任何同名的属性. 2010年9月14日, ...

  3. javascript 词法结构小结

    作为一名前端程序员,自然学习了一些框架,但是学的越多越发现自己基础的不足,于是想系统的学习一下js基础,然后把它记录下来. 如其他编程语言一样,词法结构是一门语言的基础,它规定了诸如如何给变量起名字. ...

  4. JavaScript 词法、静态、动态作用域初级理解

    开始之前 由于本人也是JavaScript初学者,记录学习经过,怕以后会忘记. 对于JavaScript 初学者来说,最难的不是代码部分,而是对很多书籍中的术语的理解,大多时候想要理解一段JavaSc ...

  5. JavaScript词法作用域与调用对象

    关于 Javascript 的函数作用域.调用对象和闭包之间的关系很微妙,关于它们的文章已经有很多,但不知道为什么很多新手都难以理解.我就尝试用比较通俗的语言来表达我自己的理解吧. 作用域 Scope ...

  6. JavaScript 词法作用域不完全指北

    在 JavaScript 作用域不完全指北 中,我们介绍了作用域的概念以及 JavaScript 引擎.编译器和作用域的关系.作用域有两种主要的工作模型:词法作用域和动态作用域.其中最为普遍的也是大多 ...

  7. JavaScript词法作用域—你不知道的JavaScript上卷读书笔记(一)

    前段时间在每天往返的地铁上抽空将 <你不知道的JavaScript(上卷)>读了一遍,这本书很多部分写的很是精妙,对于接触前端时间不太久的人来说,就好像是叩开了JavaScript的另一扇 ...

  8. JavaScript 词法句法

    JavaScript 中的几个重要概念 JavaScript 遵循 ECMA-262 规范,目前其最新版是 ECMAScript 2018,而获得所有主流浏览器完全支持的则是 ECMAScript 5 ...

  9. JavaScript权威设计--JavaScript词法结构(简要学习笔记二)

    1.字符集 JavaScript是用Unicode字符集编写的 2.区分大小写 html不区分大小写,xhtml区分大小写 如:html中onclick可以写成Onclick 但是js中必须写成onc ...

随机推荐

  1. proxmox ve系统绑定上联外网出口bond双网卡

    背景描述:一个客户搭建proxmox ve系统,要求上联出口双网卡绑定bond, proxmox ve下载地址:超链接 记录日期:2020/5/9 前期准备:服务器接好2个网卡 交换机:H3C 1.p ...

  2. 请你尽量全面的说一个对象在 JVM 内存中的结构?

    从 Java 14 开始,Project Valhala引入了 Value Type(或者称为 inline type),参考: Valhalla: https://openjdk.java.net/ ...

  3. 压缩文件 .zip.001 .zip.002合并

    可以把名字特别长的命名为1  这样简单些 copy /B 1.zip.001+1.zip.002 1.zip

  4. Cisco交换机管理员配置

    conf tservice timestamps debug datetime msec localtime yearservice timestamps log datetime msec loca ...

  5. P1255 数楼梯 Python实现

    题目描述 楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 输入格式 一个数字,楼梯数. 输出格式 走的方式几种. 输入输出样例 输入 #1 4 输出 #1 ...

  6. dedecms织梦搜索页错乱的解决方法

    在使用DEDE程序所架设的网站时,使用搜索结果页展示的问题上,由于font样式飘红问题,导致页面错乱,今天来解决这个问题. 织梦程序的搜索结果原理很简单,利用font加入颜色样式赋予搜索结果,所以显示 ...

  7. 设计模式(四)——Java抽象工厂模式

    抽象工厂模式 1 基本介绍 1) 抽象工厂模式:定义了一个 interface 用于创建相关或有依赖关系的对象簇,而无需指明具体的类 2) 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合. 3) ...

  8. UI自动化实战进阶后续

    前言 最近几天因为回老家的缘故,暂时没空学习和记录,好不容易抽空那就赶紧开始后面的实战. 前面我们已经基本完成了测试的框架,并且也有了PO设计模式,后面我们还缺少什么呢?做为自动化测试最主要的测试报告 ...

  9. SQL中字符串截取函数(SUBSTRING)

    1.left(name,4)截取左边的4个字符 列: SELECT LEFT(201809,4) 年 结果:2018 2.right(name,2)截取右边的2个字符 SELECT RIGHT(201 ...

  10. hdu 4738 Caocao's Bridges(割边)

    题目链接 用tarjan求桥上的最小权值 #include<bits/stdc++.h> #define ll long long int using namespace std; inl ...