前端培训-初级阶段(13) - ECMAScript (语法、变量、值、类型、运算符、语句)


思否
前端培训 JavaScript

转载自 SegmentFault

前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。

该文为前端培训-初级阶段(13、18) (介绍了 ECMAScript 历史,ES6 常用点)的补充内容。

本文介绍ECMAScript基础知识。

我们要讲什么

  • 语法

  • 变量

  • 类型、值

  • 运算符

  • 语句

语法

如果是熟悉任意一门高级编程语言的开发者会发现 ECMAScript 的语法很容易掌握,因为差距不是很大,其中也有借鉴的地方。尤其是与 Java 有一些关键的语法特性相同,名字都是蹭热度。

区分大小写 varVar 是不同的变量

变量是弱类型的 这点和其他语言有很大区别,(前端也有TS)。

结尾分号不是必须的 但是比如(()=>console.log(‘ln’))(),有时候容易出现异常错误

window.a
;(v=>console.log(v))(1)
window.a
(v=>console.log(v))(1)

注释

单行注释以双斜杠开头(//

  • 多行注释以单斜杠和星号开头(/*),以星号和单斜杠结尾(*/

括号表示代码块 不会生成块级作用域(老版本)

变量

  • 命名规则 第一个字符必须是字母、下划线(_)或美元符号($),余下的字符可以是下划线、美元符号或任何字母或数字字符

声明方式

var 声明变量,变量提升

  • let 会生成块级作用域

  • const 生成一个不可以改变的常量

类型、值

原始类型 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。 原型类型有 Undefined、Null、Boolean、Number 和 String 。由于这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域中(栈)。这样存储便于迅速查寻变量的值。 可以使用 typeof 来判断是什么类型

注释:您也许会问,为什么 typeof 运算符对于 null 值会返回 “Object”。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。

Undefined 当声明的变量未初始化时,或者对象中不存在的值。认为是一个暂未赋值的值。

  • Null 对象占位符,认为是一个空的值。

  • Boolean 布尔类型 true 和 false。

Number 可以表示 32 位的整数,还可以表示 64 位的浮点数。对于浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。

用 64 位 IEEE 754 形式存储浮点值,这意味着十进制值最多可以有 17 个十进制位。17 位之后的值将被裁去,从而造成一些小的数学误差。

  • String 字符串类型

  • 引用类型 存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。 该类型指 Object ,当然还有 Array,Array 也是对象的一种。

运算符

运算符 优先级 例子 描述

. [] () 1 Math.random();arr[0];(a+1)*b 字段访问、数组下标、函数调用以及表达式分组

++ -- + - ~ ! delete new typeof void 2 ++a;a++;+a;-a;~a;!a; 一元运算符

* / % 3 ++a;a++;+a;-a;~a;!a; 二元运算符,算数运算符,乘、除、余

+ - 4 a+b;a+'';a-b 二元运算符,算数运算符,加减、字符串连接

<< >> >>> 5 2>>1 二元运算符,位运算符,位移,无符号位移

< <= > >= instanceof 6 2>1 二元运算符,比较运算符

== != === !== 7 2==1 二元运算符,比较运算符

& 8 2&1 二元运算符,位运算符,按位与

^ 9 2^1 二元运算符,位运算符,按位异或

1 10 211 二元运算符,位运算符,按位或

&& 11 2&&1 二元运算符,逻辑运算符,短路

11 12 2111 二元运算符,逻辑运算符,短路

?: 13 “ 三元运算符,条件运算符

= oP= 14 “ 二元运算符,赋值运算符

, 15 “ 逗号,多重

语句

语句 功能 示例 描述

if 逻辑判断 if(a % 2 == 0){console.log(‘偶数’)} 用来判断条件成立执行代码

if(){}else{}

if(){}else if(){}else{}

switch(){case:break;default:break;} 类似于if但是是单值匹配

找到对应状态执行代码

for(初值;判断;步长){} 循环遍历 for(var = 1;i < 10; i++) console.log(i) 完成多个相同功能的任务

while(判断){} 循环遍历

完成多个相同功能的任务

do{}while(); 循环遍历

完成多个相同功能的任务


原文:SegmentFault

评论

评论功能即将开放。你也可以通过 邮件GitHub Issue 反馈。