目录
标识符:
ECMA-262规定JavaScript表示符采用驼峰式书写(lastTime)。
- 第一个字符必须是一个字母、下划线(_)或一个美元符号($)。
- 其他字符可以是字母、下划线、美元符号或数字。
严格模式 (use strict);
表示对语法与写法的高度要求。
关键字:
具有特定用途,如:break do typeof case else if var let new…
保留字:
不能用作表示符但也不是关键字的字符,大部分是JavaScript中未使用的C,JAVA中的关键字。
变量:
JavaScript的变量是松散型,即可以保存任何数据类型的数据。例:
var i=1;
i="hi";//可行但最好不要这样做。
//全局变量与局部变量
function test(){
var massage = "holle";
// massage = "holle";
}
test();
alert(message);//报错!
//alert(message); 用方法中注释写法不会报错!虽然可行但局部变量中定义的全局变量很难维护所以大型程序不要这样做!
var test1 = "1",
test2 = "2"; //script的松散类型
let为ES6规范,与var不同。
var变量有一个提升机制:
function test(){ if(test!=null){alert("1");} var test = 1;}
1.这里的代码不会报错,说明var test被提升到if前了。而弹窗缺弹出说明 赋值不会被提升。
(而let不存在这样的提升机制)
2.且var作用域为全局作用域,let只是函数内部作用域。
用 console.log(test)可打印出var变量但不能打印let变量。
typeof操作符
语法:typeof (表达式) || typeof 变量
函数在JavaScript中是对象,不是数据类型(松散)。但可以通过特殊属性判断数据类型使用typeof操作符。返回值可能是:
- "undefined"未定义
- “boolean” 布尔型
- "string"字符串
- "number"数值型
- “object” 对象或null
- “function” 函数
typeof null; 会返回一个object因为特殊值null被认为是对空对象的引用。
Undefined类型
对一个只定义未赋值的变量(未初始化),会输出undefined。
*定义为值undefined与默认是有区别的 *
Null类型
Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值时会返回"object"的原因。
null与undefined不同,只要特意未未保存对象的变量保存null值,就可以特意判断指针是否为空!(而不需判断指针是否为undefined)
Boolean类型
布尔类型只有两个值:true和false,且区分大小写。
所有类型值都可以转换为Boolean型,调用Boolean()函数即可。
Number类型
支持 8进制 16进制
8进制第一位必须是0,且后面数值为八进制数字序列(0-7)。
十六进制前两位必须是0x 后跟任何十六进制数字(0-9及A-F)
在进行算术运算时 八进制与十六进制都会转换成十进制进行运算。
浮点型 float
var floatNum = 0.1; //生效
var floatNum = .1;//生效
var floatNum = 3.125e7; //等于31250000 = 3.125*10^7
数值范围
ECMAScript能够表示最小数为5e-324 ,最大为 1.7976931348623157e+308 。
浮点型运算时 0.1+0.2 != 0.3 而 = 0.30000000000000004
Infinity(正无穷) -Infinity(负无穷)无法参与计算 可用isFinite()函数判断是否不为无穷。
NaN
NaN为非数值类型 (not a number)
NaN有两个特点:
- NaN不等于任何值
- NaN不等于NaN
所以可以用isNaN()判断变量是不是为NaN。
isNaN()原理:把不是数值的值直接转换为数值判断。(true可转换为1所以true不是NaN)
在基于对象调用isNaN()函数时,会首先调用对象的valueOf()方法,然后确定该方法返回的值是否可以转换为数值。如果不能,则基于这个返回值再调用toString()方法,再测试返回值。
数值转换
非数值转换为数值函数:
- Number()
- boolean值,true=1,false=0.
- 如果是null,返回0.
- 如果是undefined,返回NaN.
- 如果是字符串,字符串中是数字格式就返回数值,浮点型返回浮点型,十六进制返回相同大小十进制。
- 如果式对象,则调用对象的valueOf()方法,在调用toString()方法。
- parselnt()
- 从第一个字符开始检验,忽略非数字字符,只返回数字字符,检验到数字后遇到非数字字符停止。
parseInt("0xAF, 16); 识别16进制数字,返回10进制
- 解析10进制是为避免解析错误,第二个参数最好加10.
- parseFloat()
- 从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。
- 字符串中第一个小数点有效,第二个无效(22.34.5=>22.34).
- 直解析10进制数字.
- 如果解析的是纯整数则返回整数.
String类型
1. toString()
数值、布尔值、对象和字符串值(没错,每个字符串也都有一个toString()方法,该方法返回字符串的一个副本)都有toString()方法。但null和undefined值没有这个方法。
var num=10;
alert(num.toString()); //'10'
alert(num.toString(2)); //'1010'
alert(num.toString(8)); //'12'
alert(num.toString(16)); //'a'
toString()方法可以根据不同的基数输出不同的值。
但是null和undefined没有toString()方法
可以用String()判断是不是null与undefined,不是可以使用toString()方法。
var value1=10;
var value2=true;
var value3=null;
var value4;
alert(String(value1)); //'10'
alert(String(value2)); //'true'
alert(String(value3)); //'null'
alert(String(value4)); //'undefined'
Object类型
概念:对于事物我们可以把他们看作是一个对象(object),而每一个事物都有自己的表示的属性和对于某一信息作出的相应的操作。
var obj= new Object();
Object每个实例都有下列属性和方法:
- constructor : 保存着用于创建当前对象的函数。例:上述Object()就是构造函数(constructor)。
- hasOwnProperty(propertyName) : 检查给定的属性在当前对象中实例中时候存在(propertyName)。属性名必须以字符串形式给定(hasOwnProperty(“propertyName”))。
- isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型(用法: obj.isPrototypeOf(object) )。
- toLocaleString() : 返回对象的字符串表示,与执行环境的地区对应。
- toString() : 返回对象的字符串表示。
- valueOf() : 返回对象字符串、数值或布尔值表示,一般与toString()返回值相同。
javascript中DOM与BOM对象属于宿主对象,与Object不同。