J高三-第三章学习笔记

  • 标识符
    字母$下划线,非首字符还可以是数字

  • 注释
    //

/*
*
*/

  • 严格模式
    “use strict”;
    报错行为:
    省略var初始化变量
    定义名为eval或arguments的变量
    不能使用数字的八进制字面量
    函数的形参不能有两个同名参数,参数和函数名不能为eval或者arguments
    修改arguments值会报错

  • 省略var初始化变量会定义为全局变量,不推荐

  • 基本数据类型,简单数据类型
    Undefined Null Boolean Number String

  • 复杂数据类型
    Object

  • typeof运算符
    String “string”
    Number “number”
    Boolean “boolean”
    Undefined “undefined”
    Null或对象 “object”
    函数 “function”

  • Undefined类型
    使用未声明变量会报错
    变量不初始化的时默认值是undefined
    typeof操作未声明或未初始化变量都返回undefined

  • NUll类型
    null == undefined //true

  • Boolean类型
    其他类型转布尔用Boolean()方法
    String 非空为true,空为false
    Number 非零和无穷大为true,0和NaN为false
    Object 任何对象为true,null为false
    undefined为false

  • Number类型
    默认十进制,0开头且在0到7之间解析为八进制,0x开头且在0-9,a-f或A-F为十六进制
    算术计算会把八进制和十六进制转换成十进制

浮点
.1 1. 都是有效的浮点,虽然不推荐
科学计数法使用e后面的数字表示10的指数次幂
浮点最高精度是17位小数
浮点不能做相等测试,0.1+0.2的结果大于0.3

数字范围
数值范围是Number.MIN_VALUE到Number.MAX_VALUE
isFinite() 检查数字是否在范围内
超出范围自动转为特殊的无穷值

NaN
任何数除以0返回NaN
设计NaN的操作都会返回NaN
NaN跟任何值都不相等,包括NaN本身

isNaN()检查不是数值
字符串,NaN和非数字字符串(“10x”)返回true(parseInt(“10x”)返回10)
数值、数值字符串"10"和布尔(true,false)返回false

Number()函数
true和false转为1和0
null返回0
undefined返回NaN
字符串:
不能转0开头的八进制
0x开头的十六进制转为十进制
空字符串转为0
对象:
调用其valueOf()方法按照基本类型转换
如上述返回值为NaN则调用toString()方法按照基本变量类型转换

parseInt()函数
忽略空格找到第一个非空格字符,如果不是数字字符或者负号返回NaN,如果是数字字符则继续解析或者遇到非数字字符
ES5直接支持十六进制字面量字符串,不直接支持八进制
可以通过第二个参数传2、8或16解析二进制、八进制或十六进制

parseFloat()函数
只接受第一个小数点
十六进制格式字符串转为0
不接受第二个参数
如果可以解析为整数则返回整数,用Number.isInteger证实是整数

  • String类型
    length属性返回字符个数
    单引号或双引号不能混用
    字面量:
    \n换行 \t \b \r \f \ ’ "
    \xnn \x41表示"A"
    \unnnn \4e00 表示汉字
    输出所有汉字:
    parseInt(“4E00”, 16 ) // 19968
    parseInt( ‘9FA5’, 16) // 40869
    unescape("%u" + n.toString( 16 ))

字符串是不可变的,修改字符串时会销毁原来的字符串
IE6字符串拼接速度很慢,但是新版浏览器都解决了

其他类型转字符串
toString()方法,但是null和undefined没有,
接受参数为2到36在谷歌浏览器试出来的
String()接受null和undefined返回"null"和"undefined",对象则调用toString方法

  • Object类型
    new Object() 或者 new Object,或者不推荐
    实例属性:
    constructor 指向构造函数
    hasOwnProperty(propName)检查是否为对象属性而不是原型属性
    isPrototypeof(object)检查是否是一个对象的原型
    propertyIsEnumerable(propName)检查能否用for-in遍历
    toLocalString()本地化字符串表示
    toString()返回对象的字符串表示
    valueOf()返回对象的字符串数字或者布尔表示

BOM对象和DOM对象是宿主对象不一定继承了Object,不确定

  • 递增和递减
    在表达式中使用时,前置先递增递减后取值,后置先取值再递增递减
    非数值会转为数值再递增

  • 一元加和减
    非数值类型会被转为数值类型

  • 位操作
    ES5存储使用64位,操作时会转为32位结束后转为64位存储,导致NaN和Infinity用位操作会当做0处理
    对开发人员,就像是只有32位的整数
    第一位是符号位1表示负数0表示整数
    负数的二进制码:绝对值的二进制码,反码,加一
    18使用toString(2)时返回"10010",-18是"-10010",说明转换过程理解了二进制补码展示得更有逻辑
    非数值用位操作符会自动用Number()函数转化为数值

按位非:波浪线~ ,取补码,本质是操作数的复制减1
按位与:和号字符&,都是1得到1否则为0,本质是把每一位对齐
按位或:竖线符号|,至少有一个1就得到1否则为0
按位异或:插入符号^,有且只有一个1就得到1否则为0,不同为1相同为0
左移: 两个小于号<<,保留符号位向左移动
有符号右移:两个大于号>>,保留符号位向右移动
无符号右移:三个大于号>>>,不保留符号位向右移动

  • 布尔运算符 与或非
    非布尔类型会转为布尔类型

  • 加减乘除运算符
    非数值类型会自动调用Number()转为数值类型

  • 大于,小于,不大于,不小于
    如果有非数值和数值比较会自动调用Number()转为数值类型

  • 相等运算符
    比较字符串数值布尔比较简单
    相等运算符会对不同类型的基本数据类型进行强制转换
    全等运算符不会进行转换

  • switch语句
    可以使用任何数据类型来决定case执行
    case甚至可以是变量甚至表达式
    表达式:

switch(true) {
	case expression1 
		[code]
		break;
	case expression1
		[code]
		break;
	default:
		[code]
}
  • 函数
    函数中arguments数组存放参数,长度是根据传入元素个数计算的,命名参数是可选的
    赋值给arguments的元素会修改参数,修改参数不会改变arguments的元素
    严格模式修改arguments值会报错
    函数没有重载,使用arguments是一种替代方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值