首页 > PHP资讯 > HTML5培训技术 > javascript基础一

javascript基础一

HTML5培训技术
两年前在重温javascript红宝书《javascript高级程序设计》时,方便自己临时查阅某些忘记的基础知识,顺便用evernote整理了一下笔记。这些年在cnblogs拜读各位大神的blog,而自己没写过公开的blog。现在把笔记整理上来,希望对入门的童鞋有点点帮助~
 
  javascript基础一,后面还有两篇哦~可能个别文字或者表达有问题,欢迎各位指出  
 
  附上evernote的公开链接:https://app.yinxiang.com/shard/s10/sh/81bef8e2-f56f-4f28-bb74-ed81f413de2c/3d14cd48699ce4a4a2cea8f55fe8f0cf
 
标识符:以字母、下划线或者美元符号开头,标识符的其他字母可以是字母、下划线、美元符号或者数字。
不能以保留字、关键字、true、false或者null作标识符
js区分大小写
var   var是一个关键字
标识符即变量的名称
区分大小写
变量
定义了而未初始化(即赋值)的变量,其值为undefined。
undefined:任何未定义或者定义了但未初始化的变量,都会保存undefined,使用未定义变量会报错
注意函数中定义变量为局部变量,随函数退出时销毁。
变量可以保存任何类型的值,而且可以随时改变保存的类型。
数据类型(6种)
5种基本(简单)数据类型:Undefined、Null、Boolean、String、Number
1种复杂类型:Object
typeof操作符
返回一个字符串   eg:typeof "string"
"undefiend"-这个值未定义或者未初始化
"string"-这个值是字符串
"boolean"-这个值是布尔值
"number"-这个值是数值
"object"-这个值是null或者对象
"function"-这个值是函数
注意:返回的字符串是小写字母开头
Undefined类型
声明(定义)了而未初始化的变量保存着undefined值
未定义的变量直接使用会报错(typeof操作符例外)
typeof 未定义的变量和typeof未初始化的变量都返回"undefined",由此typeof区分不了为定义的变量和未初始化的变量
变量定义后推荐立即初始化
Null类型
null值表示一个空指针对象!
故 var car =  null; alert(typeof car); 返回object     因为null其实是一个特殊的对象!
若一个变量准备保存对象,最好初始化为null,表示它为对象,只要检查它是否等于null就知道是否保存了一个对象的引用。即要保存对象的变量还没真正保存对象,就应该明确让变量保存null值。
undefined派生自null,即alert(null == undefined)  返回true,但其间发生了类型转换。
Boolean类型
只有两个值:true和false,注意大小写
所有数据类型都有与boolean类型相对应的值,通过转型函数Boolean()实现,注意在判断条件中自动调用转型函数。
Boolean()的转换规则(红皮书P23)
Number类型
数值表示   不是0开头表示10进制(12),0开头且以8为基数表示8进制(070),0x开头且以16为基数表示16进制(0xaf)。
运算时,数值始终转为十进制,结果也以十进制来表示。
浮点数:该数值必须只包含一个小数点,而且小数点后面至少有一位数字。
注意浮点数在某些情况下会自动转为整数
浮点数数值计算会产生舍入的误差问题,不要测试某个特定的浮点数值
数值范围:ECMAScript表示范围:Number.MIN_VALUE至Number.MAX_VALUE
超出范围,被转换为特殊的Infinity,正无穷Infinity,负无穷-Infinity
isFinite()函数检查是否在最大和最小值之间,是则返回true,否则返回false
NaN:非数值,表示一个本来要返回数值的操作数未返回数值的情况。
任何涉及NaN的操作(如NAN/0)都返回NAN,在计算中要注意
NaN不等于任何值,包括他自身(只能通过isNaN()函数来判断是否为NaN),isNaN()尝试转换传入的参数为数值
数值转换
Number()函数:可以传入任何数值类型
如果是Boolean,true为1,false为0
数字值,简单的传入和返回
Undefined,始终返回NaN
Null,始终返回0? Chorme25 返回NaN
字符串:
只含有数字,则转为十进制,会忽略前导的0
含有合法的浮点数,转为浮点数,同样忽略前导的0
含有有效的十六进制格式(如:0xf),转为十进制返回(注意:八进制就不能识别出来,按照规则1来处理)
空字符串,返回0
字符串包含除上述的字符外,其他都转为NaN
对象:先调用valueOf()方法,按照前面的规则处理,如果是NaN,则再调用toString()方法,再次按照规则处理。
parseInt()函数:只能转入字符串,原理:看是否符合数值模式
他会忽略开始的所有空格,找到第一个非空格字符
找到的第一个字符不是数字字符或者是负号,则返回NaN
注意:空字符串parseInt()返回非数值NaN,而Number()返回0
如果第一个字符是数字字符,则会解析到不是数字字符为止,注意:小数点不是有效的数字字符!
parseInt()能识别各种整数格式(八进制、十进制、十六进制),注意Number()函数只能识别十进制、十六进制
eg: parseInt("0x15")  返回21(16*1+5)
eg:parseInt("07")  返回7,当做十进制的7
parseInt()还能指定转换基数,即返回何种整数格式,eg:parseInt("010",8);返回8,结果也以八进制返回
注意:指定基数时,是指把待处理字符串显示输出为指定的进制
区别:number.toString()中,number被识别为十进制,而且number一定为Number类型,之后再按照传入的基数返回toString()的值
parseFloat()函数:只能转入字符串
与parseInt()类似,忽略前导的0,找到第一个合法的浮点数字字符,小数点是合法的,故可以是以小数点作为第一个字符
区别:parseFloat()可以识别所有浮点格式(指科学计数法,返回的不是科学计数法的形式),但只能解析十进制值,任何十六进制都会转为0,八进制按照十进制方式解析,因为八进制是以0作为前导
parseFloat()没有转换基数
parseFloat()可以解析包含合法整数的字符串
String类型
字符字面量
转义序列   eg:   b(空格)   n(换行)  '   "(转义单、双引号)
具有长度属性length,对于单字节字符有效,双字节字符不精确
特点:字符串是不可变的,一旦创建,他们的赋值就不能改变,要改变,必须销毁原来的字符串,再用新值得字符串填充该变量。
转为字符串的方法。
toString()方法。
每个字符串都有toString()方法,除了null、undefined值没有这个方法,其他的值都有。
对于Number类型调用时,可以传入输出数值的基数。即返回指定有效进制的字符串值,eg:  10..toString(8) 返回8,10.toString()返回10,默认基数为10。这样就为表示各种进制数时提供了方便!但只有十进制Number能调用toString()方法,其他进制的Number类型一律当成十进制!即,把数值输出成个种进制的表示方式!注意Number..toString()与Number.toString()的区别
传入数值的基数后,返回的是指定的进制表示的数值,但为了完整表示该进制,必须给八进制和十六进制分别添加0和0x作为开头
String()方法。
任何类型的值都能转为字符串,但null、undefined同样没有
转换规则:先调用toString()方法,若则调用String()方法
String()方法不能传参
语句
注意:不存在其他语言一样的块级作用域,所有流程控制语句中定义的变量都可以被流程控制外访问到。
if语句:条件可以是表达式,表达式求值的结果可以不为布尔值,那就会自动调用Boolean()来转换求值的结果而得到布尔值
for-in语句:是一种精准的迭代语句,可以枚举对象的属性。
eg:  var obj = { a: 1, b: 2}; for(key in obj){ console.log( obj[key] ) }  // 1  n  2 
注意,key是字符串类型,故不能用点的方式来访问,必须用对象的方式来访问
switch语句:
switch()中的参数可以是任何数据类型,数值、字符串、对象都可以。
case中的值不一定是常量,可以是变量或者表达式
switch中执行的全等操作符,不会发生类型的转换
 

HTML5培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持33不支持0