js入门笔记整理

下一篇:js入门笔记整理(二)——操做符javascript


给入门的同窗整理的笔记,不对的地方欢迎指出~java

javascript的组成

首先须要明白的是,一个完整的javascript实现应该由下列三个不一样的部分组成segmentfault

  • 核心(ECMAScript,ECMAScript是一种语言的标准)
  • 文档对象模型(DOM)
  • 浏览器对象模型 (BOM)

语法

  • 区分大小写
  • 标识符
  • 注释
  • 严格模式
  • 语句

区分大小写
ECMAScript中的一切都区分大小写。如test和Test分别表明不一样的变量浏览器

标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。命名规则以下:安全

  • 第一个字符必须是一个字母、下划线(_)或一个美圆符号($)。注意数字不能当首字母
  • 其它字符能够是字母、下划线、美圆符($)或者数字。
    按照惯例,ECMAScript使用驼峰大小写格式,也就是第一个字母小写,剩下每一个单词的首字母大写。如:doSomething、myBook

注释函数

  • 单行注释以两个斜杠开头
//单行注释
  • 块级注释以一个斜杠和一个星号(/)开头,以一个星号和一个斜杠(/结尾)
/*
*这是一个多行
*块级注释
*/

严格模式
首先要理解,在严格模式下,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的转换:
clipboard.png
这些转换规则对理解流控制控制语句(如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类型
字符串可使用双引号("")或单引号('')表示

类型转换

  • toString()方法

(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'
  • String()函数

(1) 若是值有toString()方法则调用toString()方法
(2) 若是值是null,则返回'null'
(3) 若是值是undefined,则返回'undefined'

Object类型
Object类型有下列属性和方法:

  • constructor:对象的构造函数
  • hansOwnProperty(propertyName):检查给定属性在当前对象(不是实例原型)中是否存在
  • isPropertypeOf(object):检查传入的对象是不是对象的原型
  • propertyIsEnumerable(propertyName):检查给定属性是否能用for-in枚举
  • toLocaleSting():返回对象的字符串
  • toSting():转换成字符串
  • 返回对象的字符串、数值、布尔值。一般与toString()方法的返回值相同

下一篇:js入门笔记整理(二)——操做符


关注做者吧~

clipboard.png

相关文章
相关标签/搜索