前端培训-初级阶段(13) - ECMAScript (语法、变量、值、类型、运算符、语句)
转载自 SegmentFault
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
该文为前端培训-初级阶段(13、18) (介绍了 ECMAScript 历史,ES6 常用点)的补充内容。
本文介绍ECMAScript基础知识。
我们要讲什么
-
语法
-
变量
-
类型、值
-
运算符
-
语句
语法
如果是熟悉任意一门高级编程语言的开发者会发现 ECMAScript 的语法很容易掌握,因为差距不是很大,其中也有借鉴的地方。尤其是与 Java 有一些关键的语法特性相同,名字都是蹭热度。
区分大小写 var 与 Var 是不同的变量
变量是弱类型的 这点和其他语言有很大区别,(前端也有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