《你不知道的js(中卷①)》语法(代码片段)

lalal lalal     2022-12-26     394

关键词:

五、语法:

? 语法(grammar)与词法(syntax)不同。后者强调语言的 运算符、关键字等。而语法定义了此法规则是如何构成可运行的程序代码的。

一)、语句和表达式:

语句(statement)与表达式(expression),举例说明:

var a = 3 * 6;

a = 3 * 6是一个赋值表达式,加上var,就表明是一个声明同时赋值的语句,即语句由一个或多个表达式组成

1、语句的结果值:

语句都有一个结果值,如果使用控制台,输入语句,默认情况下控制台会显式所执行的最后一条语句的结果值。

或者使用 eval函数(很多语言都有这个函数,用以将字符串视作语句执行,并返回语句结果值)。

var a, b;
a = if (true) 
    b = 4 + 38;
;
a;  // 42 

2、上下文规则:

1)、大括号:

JS中有两种情况会用到:

  1. 对象常量

    var a = 
    	foo: bar()
    ;
    
  2. 标签

2)、对象解构:

ES6中新加了解构赋值:

function getData() 
    // ..
    return 
        a: 42,
        b: "foo"
    ;

var a, b = getData();
console.log(a, b);  // 42 "foo"

3)、else if:

JS中可以使用else if的原因是,if和else只包含单条语句的时候可以省略代码的。

二)、运算符优先级:

? 利用运算符优先级可以实现逻辑短路,利用逻辑短路可以实现更简洁的类似if else的逻辑表达。

三)、自动分号:

? 虽然JS有时会为代码行补上缺失的分号,即自动分号插入(Automatic Semicolon Insertion,ASI),但是我们不应该依赖他。

四)、错误:

? JS拥有各种类型的运行时错误(TypeError、ReferenceError、SyntaxError等),同时也定义了一些编译时错误(早期错误)。

五)、函数参数:

? 不要再使用arguments数组。

六)、try..finally:

? finally中的代码总是会在try之后执行,如果有catch的话则在catch之后执行。也可以将finally中的代码看作一个回调函数,即无论出现什么情况最后一定会被调用。

? 如果有finally语句,try中的continue、break、return语句最后还是要执行finally语句,如果finally报错(throw)或return、break,try中的结果会被丢弃。

七)、switch:

switch (a) 
    case 2:
        // ..
        break;
    case 42:
        // ..
        break;
    default:
        // ..

a会与case表达式逐一比较(严格相等,===),如果匹配就执行该case中的代码。

《你不知道的js(中卷)》关于this(代码片段)

一、关于this:一)、为什么要用this?functionidentity() returnthis.name.toUpperCase();varme= name:"Kyle";varyou= name:"Reader";identity.call(me);//Kyleidentity.call(you);//Reader? 观察上面的代码,使 查看详情

《你不知道的js(中卷)》行为委托(代码片段)

六、行为委托:? 总结第五章,JS中的[[Prototype]]机制就是对象之间的关联关系。一)、面向委托的设计:? 想要学习更直观的使用[[Prototype]],必须认识到它代表了一种不同于类的设计模式。1、类理论:? 类设计模式鼓励你在继承时... 查看详情

《你不知道的js(中卷)》混合对象“类”(代码片段)

四、混合对象“类”:? 在研究类的具体机制之前,首先介绍面向类的设计模式:实例化(instantiation)、继承(inheritance)和(相对)多态(polymorphism)。一)、类理论:? 面向对象编程强调的是数据和操作数据的行为本质上是... 查看详情

《你不知道的javascript[中卷]》12——生成器

     双向消息系统:     应该是花了很长的篇幅来举例交替执行——-->有点像coding的regularexpression那后面应该会有更牛逼的语法糖出来?        &nbs 查看详情

《你不知道的javascript[中卷]》14——asynquence附录

 《你不知道的JavaScript[中卷]》【14】——asynquence附录 查看详情

你不知道的javascript(中卷)笔记

<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>你不知道的javascript(中卷)</title></head><body><scripttype="text/javascript">/*//封装对象包装vara=newBool 查看详情

你不知道的js系列(29)-对象属性(代码片段)

存储在对象容器内部的是这些属性的名称,它们就像指针(从技术角度来说是引用)一样,指向这些值真正的存储位置。 varmyObject=  a:2myObject.a;//2myObject[‘a‘];//2.语法通常被称为‘属性访问’,[]语法通常被称为&lsqu... 查看详情

《你不知道的javascript[中卷]》13——程序性能

                                 &n 查看详情

你不知道的javascript(中卷)pdf

下载地址:网盘下载   内容简介  · · · · · ·JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解... 查看详情

《你不知道的javascript[中卷]》——类型&值

                  类型定义了值的行为特征             &nb 查看详情

你不知道的javascript1(作用域与闭包)(代码片段)

1.编译原理:首先,JavaScript是解释性语言,编译一行,执行一行JavaScript运行三部曲:1.语法分析2.预编译3.解释执行语法分析:js引擎来检查代码是否存在语法错误预编译:简单理解,就是在内存中开辟一些空间来声明存放一些变... 查看详情

你不知道的js系列-引擎怎么查找变量(代码片段)

对代码进行处理的三个角色引擎:从头到尾负责整个JavaScript程序的编译和执行过程编译器:负责语法分析及代码生成等作用域:负责收集并维护所有变量的查询 vara=2;编译器首先会将这段程序分解成词法单元,然后将词法单... 查看详情

《你不知道的javascript上卷》学习笔记(代码片段)

第一部分:作用域和闭包一、作用域1.作用域:存储并查找变量的规则2.源代码在执行之前(编译)会经历三个步骤:分词/此法分析:将代码字符串分解成有意义的代码块(词法单元)解析/语法分析:将词法单元流转换成抽象语... 查看详情

js你不知道的javascript笔记-this-四种绑定规则-绑定优先级-绑定例外-箭头函数(代码片段)

文章目录1.为什么要用`this`2.关于`this`的误解2.1`this`不是指向函数自身2.2`this`不指向函数的词法作用域3.什么是调用栈与调用位置4.`this`的绑定规则4.1默认绑定`fun()`4.2隐式绑定`obj.fun()`隐... 查看详情

你不知道的js系列(33)-对象复制(代码片段)

JS初学者最常见的问题之一就是如何复制一个对象。看起来应该有一个内置的copy()方法,实际上比想象中的更复杂,我们无法选择一个默认的复制算法functionanotherFunction()/**...*/;varanotherObject=c:true;varanotherArray=[];varmyObject=  a:2, ... 查看详情

《你不知道的js》提升(代码片段)

四、提升:一)、声明与赋值:? 在JS引擎中,我们一般认为的变量或函数声明,实际上分为两个部分。声明赋值//变量提升a=2;vara;console.log(a);//函数提升foo();functionfoo() console.log(1);? vara=2;? 这句声明实际上会被看为vara;a=2;两个部分... 查看详情

你不知道的js来聊聊this(代码片段)

为什么要使用this?什么是this?来看一段代码functionidentify()returnthis.name.toUpperCase();functionspeak()vargreeting="Hello,I‘m"+identify.call(this);console.log(greeting);varme=name:"Kyle";varyou=name:"Reader" 查看详情

你不知道的js(代码片段)

作用域LHSRHS区别如果RHS查询在所有嵌套的作用域中遍寻不到所需的变量,引擎就会抛出ReferenceError异常。值得注意的是,ReferenceError是非常重要的异常类型。相较之下,当引擎执行LHS查询时,如果在顶层(全局作用域)中也无法找到目标... 查看详情