3.5 操作符
1.自增自减操作符:前缀版自增自减 和 后缀版自增自减。 这两者的区别就在于前者的值在语句被求值之前就已经被改变了,后者的值要在语句被求值之后才能发生改变。例如:let num1 = 1; let num2 = ++num1 + 2 ; 那么num2就是4。 let num1 = 1 ; let num2 = num1++ + 2;那么num2 就是3
2.二进制基础:最左边的数字表示数值的符号,0为正,1为负,剩下的31位数字表示数值,比如数值18的二进制是(27个0)10010,转化为十进制就是2**4+2**1=18 数值-18的二进制的计算步骤:先正后补(就是将二进制的0变成1,1变成0)再加一
3.位操作符:按位非(~):它的作用是返回数值的一个补数 按位与(&):都为1才为1 按位或(|):有一个1就为1 按位异或(^):两个都为1则为0 左移(<<)/右移(>>):数值向左/右移动几位,左/右移以0来填充这些空位
4.布尔操作符: 逻辑非(!):先将操作符转化为布尔值,再对其取反 逻辑与(&&):都为真才为真 逻辑或(||):有一个真就为真
5.乘性操作符: 乘法(*) 除法(/) 取模(%) [就是余数]
6.指数操作符:** 例如num**2 ,就是num的平方
7.相等操作符:(==)这个操作符会先进行强制类型转换,再确定操作数是否相等 (===)这个操作符再不进行强制类型转化的情况下进行比较
8.条件操作符,也就是三元表达式 例如:let max = (num1>num2)?num1:num2
3.6 语句
if语句:if(){}else if(){}else{}
do while循环 : do{}while() 换句话就是当这个条件成立时就一直进行这个循环
while循环 : while(){} 当这个条件成立时就一直进行这个循环
for循环: for(let i = 0 ; i < 10 ; i++){} 就是把循环相关的代码整合到了一起
for in的循环遍历 for(i in object){} 循环遍历对象里面的内容; for of的 循环遍历 for (i of [ ]) 循环遍历数组里面的内容
break 和 continue :break语句是立即跳出循环,进入下一条语句 ; continue语句是立即跳出循环,进入循环顶部再执行(就是跳过这次循环)
switch语句 switch(){case value1:statement;break;case value2:statement;break;default:statement}
js借鉴了c语言和类c语言的内容,因此能在js中看到其他语言的影子
第四章 变量,作用域与内存
原始值和引用值:
1.存储位置的不同:原始值就是基本数据类型(undefined,null,boolean,number,string,symbol),原始值是直接保存在栈内存中的 ;引用值大部分是对象,栈内存中保存的是指针,指向堆内存中的对象 2.通过变量复制也不同,原始值复制的两个数据独立使用,互不相关。而引用值复制的就是一个指针,两个变量指向同一个堆内存中的对象,这就导致一个变量发生改变,另一个变量也会发生改变。
执行上下文与作用域:每个上下文都可以到上一级上下文中搜索变量和函数,但任何上下文都不能到下一级上下文中去搜索
垃圾回收(通过自动内存管理实现内存分配和闲置资源回收)
1.离开作用域的值会被自动标记为可回收,然后在垃圾回收期间被删除 2.主流的垃圾回收算法是标记清理,就是给当前不使用的值加上标记,再回来回收它们的内存 3.解除引用:当数据不再必要,那就把它设置为null(空对象指针),从而释放其引用,方便以后回收
网友评论