JavaScrip语法(更新中)

语法

  • "==" 会先看是否要转化类型再比较是否相等
    "===" 必须是类型和数值都相等,但是只要有一个是NaN,结论就是false
  • for in 会遍历的是下标,for of 会遍历的是元素
    for (let c in ['a','b','c','d']) {
        console.log(c);               
    }
    
    //输出0, 1, 2, 3
    
    for (let c 0f ['a','b','c','d']) {
        console.log(c);               
    }
    
    //输出0, 1, 2, 3
    
    
  • if条件会进行boolean转换,比如空字符串、null、undefined、0、NaN都会被转换成false

    //这个弹窗是会弹出来的!因为任何不是空字符串的,都会被认成是true;
    if("0"){
    	alert("hello");
    }
  • 比较|| 和?? (||会筛选出第一个不是假值的,但是0,false,""都算假的)??会筛选出第一个不是undefined或null的。如果没有明确添加括号,不能将其与 || 或&& 一起使用。

  • //只有??才能真正的筛选出null 和 undefined
    //??的优先级很低,所以应该记得加括号
    let height = null;
    let width = null;
    let area = (height ?? 100) * (width ?? 50);
    //如果不加括号,这里相当于
    //let area = height ?? (100 * width) ?? 50);
    //null被转化为0,最后的结果会为0
    alert(area);

函数

  • 函数内部如有同名变量,会遮盖函数外部的变量
  • 函数内部修改的是变量值的副本,所以在外部看不到更改
  • 函数里可以设定默认的参数,设定的方式是等号,以下为函数声明:
    function print(from, text = 'no given text'){
    	...
    }
    
    //当然此处text还可以是更复杂的函数表达式
    function print(from, text = anotherFunction()){
        ...
    }

    然后当调用函数的时候,如果没有传入text,那就会调用anotherFunction(),计算出text的数值

  • 函数表达式:函数声明是全局可见的,但是函数表达式只有当执行到了这个位置时才可见。
  •                       同时,函数声明会受到代码块的限制。在代码块之外不能执行(undefined)。
  •                       要解决这个问题,可以在 if ( )之外定义变量,在if内部用函数表达式定义函数。
  • //函数声明
    function print(){
        ....
    }
    
    
    //函数表达式
    let print = function(){
        ....
    }
    

数据类型

js中有8种数据类型,7种原始类型和一种引用类型。

Number

包括整型和浮点型,同时包含一些特殊值,比如-Infinity、Infinity、NaN(粘性,对NaN的任一步操作都会返回NaN)

BigInt

js的数据范围无法超过2**53 - 1;所以引入了BigInt

// 尾部的 "n" 表示这是一个 BigInt 类型
const bigInt = 1234567890123456789012345678901234567890n;

String

  1. 创建string,可以有单引号、双引号、反引号
    let a = "hello world";
    let b = 'hello world';
    let c = `hello world ${表达式或者变量}`;
  2. 计算某个string的ASCII 
    s.charCodeAt(0);
    //如果不传参数就默认输出[0]位置的ASCII Code
    
    s.codePointAt(0);
    //返回UTF-16的code,但是可以处理由于复杂字符而产生的代理对(一对2个字节组成的char)
  3. 获取某个位置的字符串
    s[5]
    s.charAt(5)
    //这两种方法的区别是,如果这个位置不存在:
    //[]方法会返回undefined
    //charAt( )方法会返回空字符串
  4. 字符串分割
    let s = "hello   there"
    s.split();
    //不写参数的话会把hello there作为一个大元素放进array里
    
    s.split("");
    //会把每一个字符当成元素放进array里,中间间隔""也会放进去
    
    s.split(" ");
    //会把单词放进array里,但是中间多个空格连在一起的时候会放进去""
  5. 字符

"null"值

"undefined"型

Symbol 

Object

  1. JS的对象是键值对的集合
  2. 创建对象
    let Alice = new Object();
    let Bob = {};
    
    
  3. 删除对象属性
    delete alice["age"];
    
    delete alice.age;

数组

函数

  • 在array前插入元素 --- unshift( )
//array首部插入值
//unshift同时传入多个参数的话,会按照传参数的顺序直接插入
//所以这和一个参数一个参数传的不一样!
let arr = [4, 5, 6];
arr.unshift(1, 2, 3);

//[1,2,3,4,5,6]
  • 结合两个数组array.concat( );
    const array1 = ['a', 'b', 'c']; 
    const array2 = array1.concat(3, [5,7],[[100]] ); 
    //输出是Array ["a", "b", "c", 3, 5, 7, Array [100]] 
    //[5, 7]是array,所以是元素进入了array //对于nested array, [[100]]就不会解开
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值