js高程读书笔记

02.23

  • 带有src的<script>元素不应该在其script标签之间包含额外的javascript代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件。
  • 在script元素中设置defer属性,相当于告诉浏览器立即下载,但是延迟执行
  • XHTML 指可扩展超文本标签语言(EXtensible HyperText Markup Language)。XHTML 的目标是取代 HTML。XHTML 与 HTML 4.01 几乎是相同的。XHTML 是更严格更纯净的 HTML 版本。XHTML 是作为一种 XML 应用被重新定义的 HTML。XHTML 是一个 W3C 标准。元素必须被正确地嵌套。非空标签必须使用结束标签。
  • 混杂模式和标准模式主要影响css内容的呈现,但在某些情况下也会影响到JavaScript的解释执行
  • ECMAScript5引入了严格模式的概念。严格模式是为JavaScript定义了一种不同的解析与执行模型。一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。
  • ECMAScript中有5中简单数据类型(基本数据类型):Undefined、Null、Boolean、Number、String。1种复杂数据类型-Object
  • 用typeof可能返回 “undefined”,“boolean”,“string”,“number”,“null”,“function”,“object”

  • Undefined类型

var message;
//var age
alert(message)//"undefined"
alert(age)//产生错误

var message;
//var age
alert(typeof message)//"undefined"
alert(typeof age)//"undefined"
  • Null类型
var car=null;
alert(typeof car)//"object"
if(car!=null){
    //对car对象执行某些操作
}
1+undefined//NaN
1+null//1
console.log( null instanceof object)//false
  • Boolean类型
var found=true;
var message="hello world"
var messageAsBoolean=Boolean(message)//true
//false值:false, 空字符串"",0和NaN,nullundefined
var b=new Boolean(false)
console.log(b)//object

02. 24

  • Number
var octalnum1=070//八进制的56
var octalnum2=079//无效的八进制数值  79
var octalnum3=08//无效的八进制数值  8
//八进制字面量在严格模式下是无效的,会导致支持的JavaScript引擎抛出错误
var hexnum1=0xA//十六进制的的10
var hexnum2=0x1f//十六进制的31

var floatnum1=1.1
var floatnum2=0.1
var floatnum3=.1//有效但是不推荐
var floatnum1=1.//小数点后面没有数字,解析为1
var floatnum2=10.0//**整数-解析为10**
//0.1+0.2!=0.3按分(而不是元)计算金额。百分比放大100倍计算以避免出现小数。
var result=Number.MAX_VALUE+Number.MIN_VALUE
isFinite(result)//false

Number()数值转换规则:
如果是Boolean值,true1 false0
如果是数字值,只是简单的传入和返回
如果是null值,返回0
如果是undefined值,返回NaN
如果是字符串:如果只包含数字,则转换成10进制,“011”-11(忽略前导0);如果包含有效的浮点格式,如“1.1”则转换成浮点数值(忽略前导0);如果包含有效的十六进制,则转换成相应的十进制数值;如果是空,则转换成0;若果是除了上述格式以外的字符,则转换成NaN

paerseInt()会忽略字符串前面的空格,知道找到第一个非空格字符。如果第一个字符不是数字字符或负号,则返回NaN。

parseInt("10",2)//2
parseInt("10",8)//8
parseInt("10",10)//10
parseInt("10",16)//16
parseFloat()只解析十进制值
parseFloat("1234blue")//1234
parseFloat("0xA")//0
parseFloat("22.5")//22.5
parseFloat("22.36.5")//22.36
parseFloat("0908.5")//908.5
paeseFloat("3.125e7")//31250000
  • NaN
//任何涉及NaN的操作都会返回NaN。任何数值除以0都会返回NaN
isNaN(NaN)//true
isNaN(10)//false
isNaN("10")//false,会转换成数值10
isNaN("blue")//true
isNaN(true)//false,可以转换成1
0/0   //NaN
  • String
var text="this is"
text.length//7
var num=10
num.toString()//"10"
num.toString(2)//"1010"
num.toString(8)//"12"
num.toString(10)//"10"
num.toString(16)//"a"
var value4
String(10)//"10"
String(true)//"true"
String(null)//"null"
String(value4)//"undefined"

null和undefined没有toString()但是可以String()

  • object
  var o=new Object();
  var o=new Object//不推荐
  • 一元加减操作符
var s1="01"
var s2="true"
var s3="z"
var s4="1.1"
var o={
    valueOf:function(){
        return -1
    }
}
+s1//1
+s2//1
+s3//NaN
+s4//1.1
+o//-1
-s1//-1
-s2//-1
-s3//NaN
-s4//-1.1
-o//1
  • 逻辑与
    如果有一个操作数为null,undefined,NaN。则返回null,undefined,NaN
    如果第一个操作数是对象,则返回第二个操作数

  • 逻辑或
    如果两个操作数都是对象,则返回第一个操作数
    如果两个操作数都为null,undefined,NaN,则返回null,undefined,NaN
    如果第一个操作数是对象,则返回第二个操作数

  • 乘性操作符

 Infinity*0//NaN
 Infinity*非零数值//+Infinity  or  -Infinity
 如果一个操作数不是数值则后台调用Number()将其转换成数值
  • 减法
 5-true//4
 NaN-1//NaN
 5-3//2
 5-null//5
 5-undefined//NaN
  • 关系操作符
var result="23"<3//false
var result="a"<3//false,"a"转换成NaN
  • with语句
var qs=location.search.substring(1);
var hostName=location.hostname
var url=location.href
with(location){
    var qs=search.substring(1);
var hostName=hostname
var url=href
}

严格模式下不能用with,否则将视为语法错误

  • switch比较用的是全等操作符

  • 严格模式:
    不能把函数命名为eval或arguments
    不能把参数命名为eval或arguments
    不能出现两个命名参数同名的情况

  • 理解参数
    修改arguments[i],对应的参数也会改变,尽管在不同的空间,其余arguments[i]会定义为undefined

  • 没有重载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值