JavaScript 语言精粹一
我很熟悉它,早就在文法书上念过了。 - 威廉·莎士比亚《泰特斯·安德洛尼克斯》
起步:
- 这本书首章并未讲解太多内容,一些太过基础的我就不予记录了
- 以编写规范出发,用‘铁路图’来进行 JS 语法调用进行阐述
- 补充代码编写的基本注意点比如
let title = 'Developers'
非等号空格两边不可移除JavaScript
没有字符类型,表示字符直接创建包含任意一个字符的字符串即可- 注意:字符串一旦创建,就无法改变;只可通过‘+’运算符进行拼接来生成一个新的字符创。
- 两个包含相同字符且顺序相同的字符串被认为属于相同字符串如:'a'+'b'==='ab'为 true
- 在
JavaScript
中,以下特殊值为false
false
undefine
- 空字符串
' '
- 数字
0
- 数字
NaN
- 同理,其他所有值在
JavaScript
中都被当做true
,包括字符串‘false’
及所有对象
有关JavaScript
中的运算符优先级
运算符 | 说明 | 优先级 |
---|---|---|
[ ] . ( ) | 属性提取、函数调用 | 从左向右 |
++ -- -~!delete new typeof void | 一元运算符、返回数据类型、对象创建、未定义的值 | 从左向右 |
*、/、% | 相乘、相除、求余数 | 从左向右 |
+、- | 相加、相减、字符串连接 | 从左向右 |
<<、>>、>>> | <<、>>、>>> | 从左向右 |
<、<=、>、>=、instanceof | 小于、小于或等于、大于、大于或等于、是否为特定类的实例 | 从左向右 |
==、!=、===、!== | 相等、不等、全等,不全等 | 从左向右 |
& | 按位“与” | 从左向右 |
| | 按位“或” | 从左向右 |
&& | 逻辑“与” | 从左向右 |
|| | 逻辑“或” | 从左向右 |
?: | 条件运算符 | 从右向左 |
=、+=、-=、*=、/=、%=、&=、|=、^=、<、<=、>、>=、>>= | 混合赋值运算符 | 从右向左 |
- 注:计算机运算计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算,然后执行较低优先级的运算
- 如果优先级一样高,一般是左往右算,特殊由右往左运算
- 比如:赋值运算符(=);三目运算符(?:)
- 如下相等:
w = x = y = z;
w = (x = (y = z));
//上方x这个括号我故意改成中文,不然格式化就自动把括号去了
var a=0,b=2,c=3,d=4,e=5,f=6,g=7,q,w;
q = a ? b : (c ? d : (e ? f : g));
w = a ? b : c ? d : e ? f : g;
console.log(q)//4
console.log(w)//4
- 在三元运算符 ? 中,有三个运算数,如果第一个运算数为真,则产生第二个运算数的值,否则产生第三个运算符的值。
- 因为我接触三元运算符也挺长的,所以总结了我自己遇到的问题
/**
* 、直接 return 返回值问题
*/
let Flag=true;
function get(){
//--错误的写法--Unexpected token 'return'
Flag? return 'success' : return 'erro'
//--正确的写法--success
return Flag? 'success':'erro';
}
get();
/**
* 、在三元运算符中夹杂执行函数问题
* 先定义再引用,或直接编写IIFE(自执行函数)
*/
let Flag=true;
function opt1(){
return 'first'
}
function second(){
return 'second'
}
Flag?first():second()
// ------------------------
Flag?(function(){
return 'first'
}()):(function(){
return 'second'
}())
字面量
- 对象字面量是一种可以方便地按指定规格创建新对象的表示法,属性名可以是标识符或字符串,这些名字被当做字面量名而不是变量名来对待,所以对象的属性名在编译时才能知道,属性的值就是表达式。
- 同理,数组字面量是一种可以方便地按指定规格创建新数组的表示法
函数
- 函数字面量定义了函数值。它可以有一个可选的名字。用于递归调用自己,具体可看(算法图解二(递归及内存存储原理))
总结:书中起步没有太多内容,过于简略介绍,内容集中在 4-6 章,期待本书后边的内容。