写在前面

知识点:

  • 最基础

    1. JS常用数据类型
    2. 常用浏览器内核
    3. 数据类型之间区别
    4. 常用关键字、保留字
    5. JS创建变量方式
  • 扩展题

    1. 常用浏览器输出方式
    2. 习题
      • 习题1 堆内存 栈内存
      • 习题2 +-*/运算符
      • 习题3 parseInt/parseFloat/Number
      • 习题4 alert/console.log
      • 习题5 ==VS===
      • 习题6 i++
      • 习题7 JS变量和属性名

2.1.10 复习

一 基础题

  1. JS常用数据类型

    Number、String、null、boolean、undefined

    引用:object、function、sysmbol

  2. 常用浏览器内核

    webkit

    gecko

    presto

    trident

  3. 数据类型之间区别?

    基本数据类型按值操作,引用类型操作的是堆内存空间地址

  4. 常用关键字、保留字

    • 关键字
      • break
      • continue
      • if
      • else
      • for
      • var / let / const / function / clase / import / export
      • instanceof
      • typeof
      • this
      • return
      • switch
      • case
      • do
      • while
      • delete
      • new
      • ...
    • 保留字
      • boolean
      • float
      • int
      • double
      • long
      • char
      • debugger
      • ...
  5. JS创建变量方式

    var / let 创建变量

    const 创建常量

    function

    class

    import

二 扩展题

2.1 常用浏览器输出方式
  1. )常用输出方式

    let a = 10;
    let b = [{id:1,name:'xxx'},{id:2,name:'yyy'}]
    //.dir输出一个对象的详细键值对信息
    //.table把一个多维JSson数组再控制台表格呈现
    console.log(a)
    console.dir(a)
    console.table(b)
  1. )浏览器窗口弹窗

    alert/confirm/prompt

    =>三种方式输出结果都必先toString转换字符串

    =>三种方式阻断JS代码执行

  2. )document.write在页面写入信息

    =》输出都是字符串

2.3 习题总结
习题1 堆内存 栈内存
let a={n:1};
let b=a;
a.x=a={n:2};
console.log(a.x); =>undefined
console.log(b);   =>{n:1,x:{n:2}}

图片说明

TIPS:

a.x=a={n:2};//先创建堆内存{n:2},再从左到右执行相当于
① {n:2}
② a.x={n:2};
③ a={n:2};

图片说明


习题2 +-*/运算符
//JS中加减乘除本是数***算(如果遇到的值不是数学类型,也需要基于Number()方法将其转换为数字,再进行运算);但JS中假发有特殊 情况:相加过程遇到字符串直接变程字符串拼接
var a='abc'+123+456;
var b='456'-'123';
var c=100 + true + 21.2 + null +undefined +'Tencent' +[] + null + 9 +false;
console.log(a,b,c);
//=>abc123456 333 NaNTencentnull9false

习题3 parseInt/parseFloat/Number
var num = parseInt('width:35.5px');        //=>num = NaN
if(num==35.5){
    alert(0);
}else if(num==35){
    alert(1);
}else if(num==NaN){
    alert(2);
}else if(typeof num=='number'){
    //先算typeof num
    //在比较
    alert(3);    //alert输出的都是字符串的'3‘
}else{
    alert(4);
}
  1. Number()他是按照浏览器底层机制,把其他数据类型转换为数字

    • 字符串:包含非有效数字类型,结果为NaN,

      但注意:Number('')=>0

    • Number(null )->0

    • Number(undefined )->NaN

    • Number(引用)先转换为字符串,在转换为数字

      • {}/正则/函数等->NaN
      • [] -> '' -> 0
      • ['12'] -> '12' -> 12
      • [12,23] -> '12,23' -> NaN
    • ...

  1. parseInt / parseFloat([val])

    传递的值一定是字符串,不是也要转换为字符串再查找

    等同于Number,也是把其他类型转换为数字类型

    和Number的区别在于字符串转换分析

    Number:出现非有效数字NaN

parseInt:把字符串整数部分解析出来

parseFloat:把字符串中小数(浮点数)解析出来

   parseInt('12.5px')->12
   parseInt('width:12.5px')->NaN
   //从最左边开始查找,以到第一个非有效数字字符。查找结束
  • parseInt('') -> NaN
  • parseInt(undefined) -> parseInt('undefined') -> NaN
//补充:
typeof undefined =>'undefined' //返回字符串

习题4 alert/console.log
console.log(alert(1));
//分为两步
1、alert(1):执行浏览器内置alert方法,执行方法弹出'1',此方法没有返回值(默认返回值undefined)
2、console.log(undefined)=>undefined
习题5 ==VS===

==:相等,数据类型不同先转为一样再比较

===:绝对相等, 类型和值一样才true

(switch case 是基于===判断)

习题6 i++
let i='10';
i=i+1; //=>'10'+1=>'101'
i++;    //=> i=11;
//i++和以上两种不完全一样,他是纯粹数***算
习题7 JS变量和属性名
//一个对象的属性名只有两种格式数字/字符串(等基本类型数值)
let obj ={
    name:"xxx",
    null:1
}
obj["name"] =>"xxx"
obj[null] =>1

变量没有任何意义,只代表他所指向的值

console.log(obj[name]);
//name只代表他所指向的值,如果没有就是undefined