下一篇:js入门笔记整理(二)——操做符javascript
给入门的同窗整理的笔记,不对的地方欢迎指出~java
首先须要明白的是,一个完整的javascript实现应该由下列三个不一样的部分组成segmentfault
区分大小写
ECMAScript中的一切都区分大小写。如test和Test分别表明不一样的变量浏览器
标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。命名规则以下:安全
注释函数
//单行注释
/* *这是一个多行 *块级注释 */
严格模式
首先要理解,在严格模式下,ECMAScript3标准中的一些不肯定行为将获得处理,并且对某些不安全的操做也会抛出错误。性能
'use strict'
这是一条编译指令,用于告诉支持的javascript引擎切换到严格模式spa
function fun () { 'ustrict'; //函数体
支持严格模式的浏览器包括:IE10+、Firfox 4+、 Safari5.1+、Opera和Chrome指针
语句
ECMAScript中的语句以一个分号(;)结尾;若是省略分号,则由解析器肯定语句的结尾。code
var count = a + b //即便没有分号也是有效的。——不推荐 var count = a + b; //有效的语句——推荐。由于加上分号能够避免不少错误,甚至提升性能
关键字和保留字
须要特别注意的就是关键字和保留字不能看成标识符使用,即变量、函数等的命名不能和关键字保留字同样。
如: var for;这是错误的,由于for是ECMAScript 5的关键字。
具体的关键字和保留字能够自行查阅相关书籍
定义变量要使用var操做符(注意var是一个关键字),后跟一个变量名(即标识符)。如:
var str;
ESCMScript也支持直接初始化,即定义变量的同时就直赋值如:
var str = 'hello word';
ECSMScript的变量是松散类型的,所谓松散类型就是能够保存任何值。所以,在修改变量的值的同时,也能够修改类型。如:
var str = 'hello word'; str = 100; //有效,但不推荐
这个列子中,str先是值为'hello word'的字符串,再是值为100的整型。
*还有一点值得注意的是,使用var定义的变量将成为其所在做用域内的局部变量。如:
function fun () { var str = 100; //局部做用域 } fun(); console.log(str); //错误
*省略var会建立一个全局变量。如:
function fun () { str = 100; //全局变量 } fun(); console.log(str); // 100
咱们并不推荐省略var,由于这可能会致使没必要要的混乱,使维护困难。在严格模式下,给未声明的变量赋值会抛出错误。
用一条语句定义变量,使用逗号隔开,ru:
var str = 'hi', msg = false, val = 100;
ESCMScript有6中数据类型:(首字母大写)
Undefined Null Number Boolean String Object
typeof操做符(所有小写)
"undefined" —— 未定义 "boolean" —— 布尔值 "string" —— 字符串 "number" —— 数值 "object" —— 对象或null "function" —— 函数
注意:从技术角度讲函数确实不是一种数据类型,它属于object类型,但能够经过typeof区分函数和其它对象,
undefined类型
即:使用var定义但没有初始化(也就是没有赋值)的变量。
初学者要区分与未定义的变量的区别:
var str; //下面变量未定义 //var msg; consoel.log(str); //'undefined' console.log(msg); //报错 //变量未定义只能执行typeof操做 typeof(str); // 'undefined' typeof(msg); // 'undefined'
null类型
从逻辑角度来看,null表示一个空对象指针。
typeof(null); //'object'
其实,undefined的值是派生自null,所以,它们的相得性质老是返回 true。如:
console.log(undefined == null); //true
可是注意他们不恒等
console.log(undefined === null); //false
boolean类型
该类型只有两个值:true和false
各数据类型和boolean的转换:
这些转换规则对理解流控制控制语句(如if语句)自动执行Boolean转换很是重要。如:
var msg = 'not null'; if (msg) { console.log('msg转换值是true'); }
Number类型
ESCMScript中使用Number类型表示整数和浮点数。
十进制:最基本的字面量格式
八进制:第一位必须是0。如:
070 //八进制的56
十六进制:前两位必须是0x。如:
oxA //十六进制的10
NaN
NaN,是一个特殊的数值,表示一个本要返回数值的操做数未返回数值的状况(这样就不会抛出错误)。如:
function fn1 () { return 10; //有数值返回 } var val1 = fn1(); console.log(val1); //10 function fn2 () { return 10; //没有数值返回 } var val2 = fn2(); console.log(val2); //NaN
任何涉及到nan的操做都返回NaN。如:
Nan / 10 = NaN;
NaN与任何值都不相等,包括NaN自己。如:
console.log(NaN == NaN); //false console.log(NaN === NaN); //false
在ESCMScript中,任何数值除以0,都返回NaN。
如: 300 / 0 = NaN;
数值转换
NUmber()函数:——可用于任何类型
(1)若是是Booleam值,true和false值分别被转换成1和0
(2)若是是数值,只是简单传入和返回
(3)若是是null,返回0
(4)若是是undefined,返回NaN
(5)若是是字符串
a.空字符串返回0
b.若是只包含数字(包括正负号),转换为十进制数值。如:
'123'转换为123 '012'转换为12(前导的0忽略)
c.若是包含有效的浮点格式,转换为相应的浮点数值(一样忽略前导的0)
d.若是包含有效的十六进制,如'0xA',转换为相应的十进制
e.不然转换为NaN
(6)若是是对象,则调用对象的valueof方法,按上述规则转换。若是返回的值为NaN,在调用对象的tostring方法,按照上述规则转换
因为Numbera()函数在转换字符串时比较复杂切不够合理,所以在处理整数的时候更经常使用的是parseInt()函数。
parseInt()函数—— 将数值转换为整数
(1)若是第一个字符(空格除外)不是数字或负号,返回NaN
(2)若是第一个字符(空格除外)是数字或负号,函数将解析第二个字符,直至解析完后续字符或者遇到了一个非数字字符。如:
var num1 = parseInt('123ad'); //123 var num2 = parseInt(''); //NaN var num3 = parseInt('0xA'); //10(十六进制) var num4 = parseInt(13.3); //13 var num5 = parseInt('070'); //56(八进制) var num6 = parseInt('20'); //20(十进制)
因为parseInt()函数在处理八进制时ESCMScript3与ESCMScript5存在分歧,ESCMScript5会忽略数字前面的值。因此为了不没必要要的错误,建议老是为函数提供第二个基数(即指定多少进制)。如:
parseInt('020', 10); //十进制 parseInt('010', 8); //八进制 parseInt('7', 10); //十进制 parseInt('7', 2); //二进制
parseFloat()函数——将数值转换为浮点数值
(1)之解析十进制
(2)始终忽略前面的0
(3)只有第一个小数点有效
var num1 = parseFloat('123ad'); //123 var num2 = parseFloat(''); //NaN var num3 = parseFloat('0xA'); //0 var num4 = parseFloat(13.3); //13.3 var num5 = parseInt('070'); //70 var num6 = parseInt('20.23e3'); //20.23000
String类型
字符串可使用双引号("")或单引号('')表示
类型转换
(1)数值、布尔值、对象和字符串值都有toString()方法
(2)null、undefined没有toString()方法
(3)方法的第二个参数能够传入基数
var num = 10; num.toString(num); //'10' num.toString(num, 2); //'1010' num.toString(num, 8); //'12' num.toString(num, 10); //'10' num.toString(num, 16); //'a'
(1) 若是值有toString()方法则调用toString()方法
(2) 若是值是null,则返回'null'
(3) 若是值是undefined,则返回'undefined'
Object类型
Object类型有下列属性和方法:
下一篇:js入门笔记整理(二)——操做符
关注做者吧~