学习javascript数据结构和算法-第一章 JavaScript简介

在这里插入图片描述

函数式的编程语言(一些简称: 剪枝, 特判)

1. 变量 作用域(全局 和局部, 局部又分(块级和函数))
2. 运算符 = 赋值 - * / %(求模) ++ --  || && ! 单算比逻三 (单目 算数  比较 逻辑 三目)
3. +-*/ % 都可以搭配 =  (a+=1++a 一样的)
4. 位运算符: & | ~ ^ << >> 与或非 异或 左移右移
5. a !== b 和 a != b 的区别  
6. ++a a++区别?
7. delete是用来删除对象属性的 可以用来删数组吗? 不能还是用 splice 比较好

判断数据类型

基本类型用typeof 数组用Array.isArray

Object.prototype.toString.call(x).slice(8,-1) // 比较强大, String, Number....
typeof 的返回值类型: string boolean number null undefined symbol bigint  object function  9种
x instanceof Object/Array
引用数据类型/对象/派生数据类型: object array function map set  
Number.isInteger(1) 判断是不是整数
Number.isNaN()

真/假值

false: “” 0 undefined null NaN
其他都是true(对象都是true)

相等运算符 === 和 ==

所以用 === 或者 Object.is()比较好, 没有隐式的类型转换, 比较原始数据类型比较的是值, 比较对象数据类型,比较的是地址.

隐式转换真的烦, 糟粕!!!

null == undefined // 特例!!!
null > -1 // true
Number(null) // 0
Number(undefined) // NaN
'' == 0 // Number('') 0  数字和字符串比较会隐式转换字符串;
'1' == 1 // Number('1') 1

true == 1 // Number(true) 1 布尔值和其他类型比较会隐式转换boolean
false == 0 // Number(false) 0
[123] == '123' // [123].toString() toPrimitive()
let obj = {}; obj  == '[object Object]' 

Object.is(a, b)=== 不同之处只有两个:一是+0不等于-0,二是NaN等于自身。
NaN == NaN // false  === 也是 false

'a' ? 1 : 2 // 1
'c' > 'b' // 字符串相比, 比的是ASCII码
false == 'a' // false  因为 Number(false)是 0  Number('') 是 NaN
true == 'a' // false 
true < 2// true > false
true == 1 
true > 0

控制结构

条件语句(分支)
let a = 2
switch (a){
    case 1: { // 括号可不加, === 匹配

        break; // 不写break就有穿透,执行下一个case了,当然也可以利用这个穿透, 少些一些代码; 如下
    }
    case 2:
    case 3:
    case 4
        console.log('2或3或4啊')
    default:{
        // 前面的case都没匹配才会走到这里来
    }
        
}
if / else if /else 
if(a===1) 
	console.log(1) // 一句代码的可省略括号
else if(a===2)
	console.log(2)
else console.log(3)

循环

递增 递减 for 循环
比如想通过循环把数组清掉
for(let i = 0;i < arr.length; i++){
	arr.pop() // 注意改变了数组, 上面的i值还用到了数组的方法,就有问题
}
上面是标准写法, 下面这样也行, 但看着不如while循环顺眼了.

let index = 0;
for (; index <10; ) {
    console.log(index);    
    index++
}

while(index < 20){
    console.log(index)
    index++
}
console.log(index);

do{
} while()  // 几乎不用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值