总结&吐槽-js悟道-11章-语句

…表示无语,或者说反对.

语句

表达式语言,陈述式语言, 目前流行的语言都是陈述式语言(有语句和表达式)


11.1 声明

let const function class 
var 已经过时,以前用于Internet Explorer...// 合着, var 之前只能IE用是吧...
let a = 1,
	b = 2; // 还是建议单独,为了可读和可维护性,这个看个人爱好,或者看公司规范.
let { name: a, age: b } = {name: 'miller', age: 19}; // a b 
let [a, b] = [2,3] 
解构并不是多么重要的语法... // 是啊, 不用也行...

function fn(){ return 'small' }
等效于 
let fn = undefined; // let 需要分号结尾...这是什么老古董
fn = function() { return 'small' ) // 等效个P....函数有变量提升,let 没有啊..

所有通过function语句创建的let语句也会被提升 // 啥意思?? let 能被提升?
if(){
	function fn(){} // 这样不好,函数还是放函数体或者模块内 // 模块内是啥意思?? 对象?
}
const a; //报错, 必须赋值 constant
使该变量不可以被重新复制; // p106 第三段,第四行, 这里应该是赋值吧...唉
Object.freeze是作用于值的,const则作用于变量 // Object.freeze冻结的变量还能重新赋值.
我们有必要理解值和变量的区别,变量包含对一个值的引用,而值从来不会包含变量

在这里插入图片描述

11.2表达式

javascript允许在语句的位置写任何表达式 // 什么是语句的位置?
有意义的表达式就三类: 赋值 调用 delete
表达式也可以写在语句的位置上,这大大降低了编译器识错的能力 // …说编译器更难识别错误不就行了.

赋值语句包含四部分: 
1. 左值,用于接收值的表达式,它可以是一个产出对象或数组的表达式... //P107 第一行 这里写得实在啰嗦,而且也不对啊
fn() = 1// 比如fn()返回一个对象,这能赋值???? 一个对象不能被赋值, 变量才行,或者说对象的属性

a.name = 1 // 赋值语句可以是
2. 运算符 = += -=  *=  /= %= **=
>>>= 右移赋值
>>= 带括号扩展右移赋值
<< 左移赋值
&= 位运算与赋值
|= 位运算或赋值
^= 位运算异或赋值
3. 表达式 //
4. 分号 // ...

在这里插入图片描述
不建议使用 ++ – , 应该抛弃 //… ++a a++ 很容易区分, 书写也方便 a += 1 a++ 你对比下
表达式语句 // 表达式是表达式, 语句是语句, 虽然严格来说,表达式也是一句…

11.3 分支

if和swicth 我们其实只需要一个,甚至都不需要.

const myObj = my[case_expression](); // 建议用对象替代switch 
上面的代码有个问题, 它与this绑定在了一起 // ??
javascript将条件语句部分当做布尔式犯蠢类型  // ?? 这说了个啥, 我知道它想表达, 用true false,真费劲..
如果if在语义上只是else区块中最顶部的逻辑,我建议你讲其写入else,而不是提升到与else平级 // 这...说了个啥, 这不废话吗
如果前一个区块是以中断(return)结尾的,就不应该使用else if // ?? 为啥不能用
function fn(a) {
	if (a > 1) {
       return 2
     } else if (a <= 1 && a > 0) {
         return 1
     } else {
     	return 3
     }
}
 console.log(fn(2))
function fn() {
	if(a > 1) return true;
	return false // 上面他应该是想说: 如果只有两种情况, 已经有一个return了,就不用在写第二个分支判断了.省点代码
}

11.4 循环

for / while / do while 我们其实只需要一个,甚至都不需要. // 又是这一句

  1. 推荐用forEach替换 for, 总之不建议使用for // 哈哈…
  2. 最好的循环写法是尾递归 //
while(true){
	// 做些事情
	if() {
		break;
	}
	//做别的事情
}

11.5 中断

break; continue; throw return ;

  1. break用于退出循环和switch语句
  2. continue 跳到循环体顶部 // 这个比我当时学得要好, 我当时学的是, 跳过本次循环-不严谨
  3. throw 抛出异常
  4. return
  5. label 做标记, 是一种设计错误

在使用return的时候确信目前应当返回, 而不是将所有的返回点集中到一处 // 不知道在说啥

11.6 大杂烩

  1. 没讲啥…就讲了个debugger ,说上线的代码不应该含有debugger

11.7 标点

if(a) xx // 不好
if(a) {} //

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值