一、JavaScript核心
一个完整的JavaScript应该由下列三个不同的部分组成。
1.核心(ECMAScript)
2.文档对象模型(DOM,Document Object Model)
3.浏览器对象模型(BOM,Browser Object Model)
二、ECMAScript
①.语法
1.区分大小写
2.标识符
3.注释
4.直接量(字面量)
直接量(字面量),就是程序中直接显示出来的数据值。
100 //数字字面量
'李炎恢' //字符串字面量
false //布尔字面量
/js/gi //正则表达式字面量
null //对象字面量
{x:1,y:2} //对象字面量表达式
[1,2,3,4,5] //数组字面量表达式
5.关键字和保留字
6.变量(松散类型)
var box;
alert(box); ②.类型
1.typeof操作符
var box='小明';
alert(typeof box);
alert(typeof '小明'); PS:函数在ECMAScript中是对象,不是一种数据类型。所以,使用typeof来区分function和object是非常有必要的。
2.五种简单数据类型:
undefined (没有初始化)
null (空对象引用【指针】,返回object)
boolean (true false)
number (整形和浮点型)
string (字符串) object类型
a.ECMAScript中的对象其实就是一组数据和功能的集合。
var box = new Object();
③.运算符
1.表达式
2.一元运算符
3.算术运算符
4.关系运算符
5.逻辑运算符
6.*位运算符
7.赋值运算符
8.其他运算符 ③.语句
1.语句的定义
语句表明执行过程中的流程、限定与约定,形式上可以是单行语句,或者由一对大括号“{}”括起来的复合语句,在语法描
述中,复合语句整体可以作为一个单行语句处理。
a.声明语句
变量声明语句 var box=100;
标签声明语句 label:box;
b.表达式语句
变量赋值语句 box=100;
函数调用语句 box();
属性赋值语句 box.property=100;
方法调用语句 box.method();
c.分支语句
条件分支语句 if(){}else{}
多重分支语句 switch(){casen:...};
d.循环语句
for for(;;;){}
for...in for(x in x){}
while while(){};
do...while do{}while();
e.控制结构
继续执行子句 continue;
终端执行子句 break;
函数返回子句 return;
异常触发子句 throw;
异常捕获与处理 try{}catch(){}finally{}
f.其他
空语句 ;
with语句 with(){}
④.函数
1.函数声明
function box(){ //没有参数的函数
alert('只有函数被调用,我才会被之执行');
}
box(); //直接调用函数
function box(name,age){ //带参数的函数
alert('你的姓名:'+name+',年龄:'+age);
}
box('李炎恢',28); //调用函数,并传参
2.return返回值
实际上,任何函数都可以通过return语句跟后面的要返回的值来实现返回值。
function box(){ //没有参数的函数
return'我被返回了!'; //通过return把函数的最终值返回
}
alert(box()); //调用函数会得到返回值,然后外面输出
function box(name,age){ //有参数的函数
return'你的姓名:'+name+',年龄:'+age;//通过return 把函数的最终值返回
}
alert(box('李炎恢', 28)); //调用函数得到返回值,然后外面输出
我们还可以把函数的返回值赋给一个变量,然后通过变量进行操作。
function box(num1,num2){
return num1*num2;
}
var num = box(10,5); //函数得到的返回值赋给变量
alert(num);
return语句还有一个功能就是退出当前函数,注意和break的区别。PS:break用在循环
和switch分支语句里。
function box(num){
if(num<5) return num; //满足条件,就返回num
return 100; //返回之后,就不执行下面的语句了
}
alert(box(10));
3.arguments对象
ECMAScript函数不介意传递进来多少参数,也不会因为参数不统一而错误。
实际上,函数体内可以通过arguments对象来接收传递进来的参数。 functionbox(){
return arguments[0]+'| '+arguments[1]; //得到每次参数的值
}
alert(box(1,2,3,4,5,6)); //传递参数
arguments对象的length属性可以得到参数的数量。
function box(){
return arguments.length; //得到6
}
alert(box(1,2,3,4,5,6)); ⑤.对象和数组
1.Object类型
a.创建
1.使用new运算符创建Object
var box= new Object(); //new方式
box.name='李炎恢'; //创建属性字段
box.age=28; //创建属性字段 2.new关键字可以省略
var box = Object(); //省略了new关键字 3.使用字面量方式创建Object
var box={ //字面量方式
name:'李炎恢', //创建属性字段
age:28
}; 4.属性字段也可以使用字符串星矢
var box={
'name' :'李炎恢', //也可以用字符串形式
'age' :28
};
5.使用字面量及传统复制方式
var box={}; //字面量方式声明空的对象
box.name='李炎恢'; //点符号给属性复制
box.age=28;
6.两种属性输出方式
alert(box.age); //点表示法输出
alert(box['age']); //中括号表示法输出,注意引号
PS:在使用字面量声明Object对象时,不会调用Object()构造函数(Firefox除外)。 7.给对象创建方法
var box={
run : function(){ //对象中的方法
return'运行';
}
}
alert(box.run()); //调用对象中的方法
8.使用delete删除对象属性
delete box.name; //删除属性
2.Array类型
1.创建
1.使用new关键字创建数组
var box=new Array(); //创建了一个数组
var box=new Array(10); //创建一个包含10个元素的数组
var box=new Array('李炎恢',28,'教师','盐城'); //创建一个数组并分配好了元素
2.以上三种方法,可以省略new关键字。
var box = Array(); //省略了new关键字
3.使用字面量方式创建数组
var box=[]; //创建一个空的数组
var box=['李炎恢',28,'教师','盐城']; //创建包含元素的数组
var box=[1,2,]; //禁止这么做,IE会识别3个元素
var box=[,,,,,]; //同样,IE的会有识别问题 PS:和Object一样,字面量的写法不会调用Array()构造函数。(Firefox除外)。
4.使用索引下标来读取数组的值
alert(box[2]); //获取第三个元素
box[2]='学生'; //修改第三个元素
box[4]='计算机编程'; //增加第五个元素 5.使用length属性获取数组元素量
alert(box.length) //获取元素个数
box.length=10; //强制元素个数
box[box.length]='JS 技术'; //通过length给数组增加一个元素
6.创建一个稍微复杂一点的数组
var box=[
{ //第一个元素是一个对象
name:'李炎恢',
age:28,
run:function(){
return'run 了';
}
},
['马云','李彦宏',new Object()],//第二个元素是数组
'江苏', //第三个元素是字符串
25+25, //第四个元素是数值
newArray(1,2,3) //第五个元素是数组
];
alert(box);
PS:数组最多可包含4294967295个元素,超出即会发生异常。
3.对象中的方法
a.转换方法
对象或数组都具有toLocaleString()、toString()和valueOf()方法。
var box=['李炎恢',28,'计算机编程']; //字面量数组
alert(box); //隐式调用了toString()
alert(box.toString()); //和valueOf()返回一致
alert(box.toLocaleString()); //返回值和上面两种一致 var box=['李炎恢', 28,'计算机编程'];
alert(box.join('|')); //李炎恢|28|计算机编程
b.栈方法(后进先出)
ECMAScript为数组专门提供了push()和pop()方法。
var box=['李炎恢', 28,'计算机编程']; //字面量声明
alert(box.push('盐城')); //数组末尾添加一个元素,并且返回长度
alert(box); //查看数组
box.pop(); //移除数组末尾元素,并返回移除的元素
alert(box); //查看元素
c.队列方法(先进先出)
通过push()向数组末端添加一个元素,然后通过shift()方法从数组前端移除
一个元素。 var box=['李炎恢', 28,'计算机编程']; //字面量声明
alert(box.push('盐城')); //数组末尾添加一个元素,并且返回长度
alert(box); //查看数组
alert(box.shift()); //移除数组开头元素,并返回移除的元素
alert(box); //查看数组 ECMAScript还为数组提供了一个unshift()方法,它和shift()方法的功能完全相反。
unshift()方法为数组的前端添加一个元素。 var box=['李炎恢', 28,'计算机编程']; //字面量声明
alert(box.unshift('盐城','江苏')); //数组开头添加两个元素
alert(box); //查看数组
alert(box.pop()); //移除数组末尾元素,并返回移除的元素
alert(box); //查看数组
PS:IE浏览器对unshift()方法总是返回undefined而不是数组的新长度。
d.重排序方法
数组中已经存在两个可以直接用来排序的方法:reverse()和sort()。
reverse() 逆向排序
var box=[1,2,3,4,5]; //数组
alert(box.reverse()); //逆向排序方法,返回排序后的数组
alert(box); //源数组也被逆向排序了,说明是引用
sort() 从小到大排序
var box=[4,1,7,3,9,2]; //数组
alert(box.sort()); //从小到大排序,返回排序后的数组
alert(box); //源数组也被从小到大排序了
e.操作方法
ECMAScript为操作已经包含在数组中的元素提供了很多方法。concat()方法可以基于当前数组创建一个新数组。slice()方法可以基于当前数组获取指定区域元素并创建一个新数组。splice()主要用途是向数组的中部插入元素。
var box=['李炎恢', 28,'盐城']; //当前数组
var box2=box.concat('计算机编程'); //创建新数组,并添加新元素
alert(box2); //输出新数组
alert(box); //当前数组没有任何变化
var box=['李炎恢', 28,'盐城']; //当前数组
var box2=box.slice(1); //box.slice(1,3),2-4之间的元素
alert(box2); //28,盐城
alert(box); //当前数组 splice中的删除功能:
var box=['李炎恢', 28,'盐城']; //当前数组
var box2=box.splice(0,2); //截取前两个元素
alert(box2); //返回截取的元素
alert(box); //当前数组被截取的元素被删除 splice中的插入功能:
var box=['李炎恢', 28,'盐城']; //当前数组
var box2=box.splice(1,0,'计算机编程','江苏'); //没有截取,但插入了两条
alert(box2); //在第2个位置插入两条
alert(box); //输出 splice中的替换功能:
var box=['李炎恢', 28,'盐城']; //当前数组
var box2=box.splice(1,1,100); //截取了第2条,替换成100
alert(box2); //输出截取的28
alert(box); //输出数组
⑥。时间与日期
1.Date类型
创建一个日期对象,使用new运算符和Date构造方法(构造函数)即可。
var box=new Date(); //创建一个日期对象
在调用Date构造方法而不传递参数的情况下,新建的对象自动获取当前的时间和日期。
alert(box); //不同浏览器显示不同
ECMAScript提供了两个方法,Date.parse()和Date.UTC()。
2.通用的方法
与其他类型一样,Date类型也重写了toLocaleString()、toString()和valueOf()方法;但这
些方法返回值与其他类型中的方法不同。
var box=new Date(Date.UTC(2011,11,5,15,13,16));
alert('toString:'+box.toString());
alert('toLocaleString:'+box.toLocaleString()); //按本地格式输出
PS:这两个方法在不同浏览器显示的效果又不一样,但不用担心,这两个方法只是在
调试比较有用,在显示时间和日期上,没什么价值。valueOf()方法显示毫秒数。
3.日期格式化方法
Date类型还有一些专门用于将日期格式化为字符串的方法。
var box= new Date();
alert(box.toDateString()); //以特定的格式显示星期几、月、日和年
alert(box.toTimeString()); //以特定的格式显示时、分、秒和时区
alert(box.toLocaleDateString()); //以特定地区格式显示星期几、月、日和年
alert(box.toLocaleTimeString()); //以特定地区格式显示时、分、秒和时区
alert(box.toUTCString()); //以特定的格式显示完整的UTC日期。
4.组件方法
alert(box.getTime()); //获取日期的毫秒数,和valueOf()返回一致
alert(box.setTime(100)); //以毫秒数设置日期,会改变整个日期
alert(box.getFullYear()); //获取四位年份
alert(box.setFullYear(2012)); //设置四位年份,返回的是毫秒数
alert(box.getMonth()); //获取月份,没指定月份,从0开始算起
alert(box.setMonth(11)); //设置月份
alert(box.getDate()); //获取日期
alert(box.setDate(8)); //设置日期,返回毫秒数
alert(box.getDay()); //返回星期几,0表示星期日,6表示星期六
alert(box.setDay(2)); //设置星期几
alert(box.getHours()); //返回时
alert(box.setHours(12)); //设置时
alert(box.getMinutes()); //返回分钟
alert(box.setMinutes(22)); //设置分钟
alert(box.getSeconds()); //返回秒数
alert(box.setSeconds(44)); //设置秒数
alert(box.getMilliseconds()); //返回毫秒数
alert(box.setMilliseconds()); //设置毫秒数
alert(box.getTimezoneOffset()); //返回本地时间和UTC时间相差的分钟数
PS:以上方法除了getTimezoneOffset(),其他都具有UTC功能,例如setDate()及getDate()
获取星期几,那么就会有setUTCDate()及getUTCDate()。表示世界协调时间。

javascript总述的更多相关文章

  1. Java的多线程机制系列:(一)总述及基础概念

    前言 这一系列多线程的文章,一方面是个人对Java现有的多线程机制的学习和记录,另一方面是希望能给不熟悉Java多线程机制.或有一定基础但理解还不够深的读者一个比较全面的介绍,旨在使读者对Java的多 ...

  2. 三国杀3v3心法——总述篇

    昔日,独孤求败前辈精研剑法,将其中奥妙化为独孤九剑,破尽天下武功.其中开篇总诀式提纲挈领,从宏观的层面阐述剑道,是领悟后面八式的基石,而之后各式则深入微观,可各破一类具体的武功.笔者亦曾苦心研究三国杀 ...

  3. Web应用程序系统的多用户权限控制设计及实现-总述【1】

    中大型的Web系统开发均需要权限的配置,基于多角色,多用户的操作权限管理是一个系统开发的基础.搭建好一套权限,用户,角色,页面一体的开发架构,可以用于后期业务的开发,同时也可用于不同业务的系统开发. ...

  4. Linux makefile教程之总述二[转]

    Makefile 总述——————— 一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或 ...

  5. Solr4.8.0源码分析(5)之查询流程分析总述

    Solr4.8.0源码分析(5)之查询流程分析总述 前面已经写到,solr查询是通过http发送命令,solr servlet接受并进行处理.所以solr的查询流程从SolrDispatchsFilt ...

  6. 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

    很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...

  7. STL特性总述——写在前面

    所谓的容器,见名知意,容纳其他数据的"器具": 特点 1)支持泛型: 2)保存副本:本质上传入对象的拷贝. 3)内存托管 :构建对象于堆,无需人工干预,自动管理内存的生存周期. S ...

  8. [转] Makefile 基础 (2) —— Makefile 总述

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...

  9. 基于ASP.Net Core开发一套通用后台框架记录-(总述)

    写在前面 本系列博客是本人在学习的过程中搭建学习的记录,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 前期我不会公开源码,我想是一点点敲代码,不然复制.粘贴那就没意思了. ...

随机推荐

  1. PHP5.4新特性

    PHP5.4 此次更新的关键新特性,包括:新增traits,更精简的Array数组语法,供测试使用的内建webserver,可以闭包使用的$this指针,实例化类成员访问, PHP 5.4.0 性能大 ...

  2. python学习笔记013——包package

    1 包(模块包)package 1.1 包的定义 包是将模块以文件夹的组织形式进行分组管理的方法 1.2 作用 分类管理,有利于防止命名冲突 可以在需要时加载一个或部分模块,而不是全部模块 mypac ...

  3. Android: ListView数据的分批加载 以及 Handle 总结

    这是效果图: activity_main.xml 01 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ ...

  4. setContentView(R.layout.activity_main)无法正常引用

    今天在写Android代码的过程中,编译器一直报错,错误出在这一行代码: setContentView(R.layout.activity_main) 提示信息是: activity_main can ...

  5. __attribute__中constructor和destructor

    1.前言 最近看到一份代码,看到一个函数前面用__attribute__((destructor))修饰,当时感觉有点怪怪的,搜了整个程序,也没发现哪个地方调用这个函数.于是从字面意思猜想,该函数会在 ...

  6. STM32以太网ETH

    注:stm32F1系列中F103片上不含MAC控制器,所以不支持以太网,只有F105和F107才支持

  7. MySQL日期与时间戳互转函数

    -- 时间戳转日期 ); #日期转时间戳 Select UNIX_TIMESTAMP('2018-07-16 12:23:00');

  8. python标准库介绍——14 gc 模块详解

    ==gc 模块== (可选, 2.0 及以后版本) ``gc`` 模块提供了到内建循环垃圾收集器的接口. Python 使用引用记数来跟踪什么时候销毁一个对象; 一个对象的最后一个引用一旦消失, 这个 ...

  9. Securecrt emacs/vi 代码无法高亮、无颜色

    无法高亮: 这是因为.bashrc中没有 export term=linux 最后,代码恢复正常:

  10. JDK1.5新特性,基础类库篇,调用外部命令类(ProcessBuilder)用法

    一. 背景 ProcessBuilder类是用来创建操作系统进程的.与Runtime.exec相比,它提供了更加方便的方法以创建子进程. 每个ProcessBuilder实例管理着一个进程属性的集合. ...