写在前面
知识点:
最基础
- JS常用数据类型
- 常用浏览器内核
- 数据类型之间区别
- 常用关键字、保留字
- JS创建变量方式
扩展题
- 常用浏览器输出方式
- 习题
- 习题1 堆内存 栈内存
- 习题2 +-*/运算符
- 习题3 parseInt/parseFloat/Number
- 习题4 alert/console.log
- 习题5 ==VS===
- 习题6 i++
- 习题7 JS变量和属性名
2.1.10 复习
一 基础题
JS常用数据类型
Number、String、null、boolean、undefined
引用:object、function、sysmbol
常用浏览器内核
webkit
gecko
presto
trident
数据类型之间区别?
基本数据类型按值操作,引用类型操作的是堆内存空间地址
常用关键字、保留字
- 关键字
- 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
- ...
- 关键字
JS创建变量方式
var / let 创建变量
const 创建常量
function
class
import
二 扩展题
2.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)
)浏览器窗口弹窗
alert/confirm/prompt
=>三种方式输出结果都必先toString转换字符串
=>三种方式阻断JS代码执行
)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); }
Number()他是按照浏览器底层机制,把其他数据类型转换为数字
字符串:包含非有效数字类型,结果为NaN,
但注意:Number('')=>0
Number(null )->0
Number(undefined )->NaN
Number(引用)先转换为字符串,在转换为数字
- {}/正则/函数等->NaN
- [] -> '' -> 0
- ['12'] -> '12' -> 12
- [12,23] -> '12,23' -> NaN
...
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