一、语法

------------------------------

  • javascript中的一切(变量、函数名和操作符)都区分大小写。

  • 标识符:就是指变量、函数、属性的名字,标识符要求如下

    1 第一个字符必须是一个字母、下划线(_)或一个美元符号($)

    2 其他字符可以是字母、下划线、美元符号或数字

    3 不能把关键字、保留字、true、false、null用作标识符

  • 注释

// 单行注释

/*

*

* 多行注释

*

*/

 

严格模式

严格模式是ES5引入的,严格模式定义一种不同的解析和执行模式,在严格模式下,对某些不安全的操作会跑出错误

// 在整个脚本中启用严格模式,可以在顶部添加如下代码

"use strict"

// 也可以指定函数在严格模式下执行

function doSomething(){

"use strict"

// ....

}

二、变量和数据类型

------------------------------

变量

1、ESCMscript中的变量是松散类型的,即JavaScript使弱类型语言,换句话说js中的变量仅仅是一个保存值得占位符而已,可以保存任何类型的值。

2、定义变量用 var 操作符。

3、使用var操作符定义的变量将成为定义该变量的作用域中的局部变量。

4、在函数作用域(块作用域)中可以通过省略var定义全局变量(不推荐)。

 

数据类型

1、js中有5中基本数据类型和1中复杂数据类型他们分别是

  • Undefined、Null、Boolean、Number、String和Object

2、typeof操作符用来检测变量的数据类型,对一个值使用typeof操作符会返回字一个 字符串 ,标示着该值得类型:

  • “undefined” —- 如果这个值未定义

  • “boolean” —- 如果这个值是布尔值

  • “string” —- 如果这个值是字符串

  • “number” —- 如果这个值是数值

  • “object” —- 如果这个值是对象或null

  • “function” —- 如果这个值是函数

3、js的6中数据类型与使用typeof判断出来的数据类型并不对应,区别就在于使用typeof得到的类型标示中没有”null”,而是多了一个”function”,其他的都是一样的,还要注意的就是对null是用typeof时会返回”object”,并且typeof操作符得到的是字符串。

三、语句

------------------------------

if语句

语法:

if(条件){

}else if(条件){

}else{

}

解释:

其中,条件可以是任意表达式,而且对这个表达式的求值结果不一定非得是Boolean值,ES会自动调用Boolean()转换函数将这个表达式的结果转换成一个布尔值。

while语句

语法:

while(条件){

something...

}

解释:

其中条件同if语句中的条件,while语句是前测试循环语句,即在执行循环体之前就要对条件表达式求值,所以循环体有可能永远不会执行。

 

do-while语句

语法:

do{

something...

}while(条件)

解释:

其中条件同if语句中的条件,do-while语句是后测试循环语句,即在对条件表达式求值之前,循环体中的代码至少被执行一次。有趣的记法就是(while是先问再揍,do-while是揍完再问)。

 

for语句

语法:

for(初始化代码, 条件, 执行循环体后要执行的代码){

something...

}

解释:

for语句也是一种前测试循环语句,所以循环体也有可能永远不会执行,for语句和while语句的区别就是,在执行循环之前初始化变量和定义循环后要执行的代码的能力。

for-in语句

语法:

for(property in expression){

something...

}

解释:

for-in语句是一种精准的迭代语句,用来枚举对象的属性,需要注意的是,for-in语句输出的属性名的顺序是不可测的,因浏览器而异。

switch语句

语法:

switch(表达式){

case value :

statement

break;

case value :

statement

break;

case value :

statement

break;

default :

statement

}

解释:

switch语句是与if语句最密切的流程控制语句,JavaScript中的switch语句有很多自己的特色,首先:可以在switch语句中使用任何数据类型,其次:每个case的值(即value),不仅仅只能是常量,也可以是变量甚至表达式。

label语句

语法:

label : statement

// 实例

start : for(var i = 0; i < count; i++){

alert(i)

}

解释:

使用label语句可以在代码中添加标签,以便将来使用,上面例子中的start标签可以在将来由break或continue语句引用,使代码跳至标签开始出执行,一般label语句都要与for语句等循环语句中的break或continue配合只用。

 

break和continue语句

语法:

// 例子

mylabel :

for(var i = 0; i < 10; i++){

for(var j = 0; j < 10; j++){

if(i == 5 && j == 5){

break mylabel;

// continue mylabel;

}

}

}

解释:

break和continue语句都是用来跳出循环的语句,不同之处在于break语句会强制执行后面的语句,而continue语句只是跳出本次循环继续执行下次循环。上面的例子中,结合使用break语句和label语句,控制代码的执行。

with语句

解释:

with语句的作用是将代码的作用域设置到特定的对象中。严格模式下使用with语句会报错。定义with语句的目的是简化同一个对象的多次编写问题,如下例:

var qs = location.search.substring(1);

var hostName location.hostname;

var url = location.href;

// 上面的代码中都包含location对象,使用with语句可以将代码简化如下

with(location){

var qs = search.substring(1);

var hostName = hostname;

var url = href;

}

四、函数

------------------------------

JavaScript中的函数使用function关键字来声明

function(arg0, arg1, arg2, ..., argn){

statements

}

 

理解参数

JavaScript中的参数有一下特点:

  1. 不介意你传递几个参数,即使你在定义函数时规定了接收几个参数,它都不会报错。

  2. 不在乎你传递的参数是什么数据类型。

之所以会这样,是因为JavaScript函数内部的参数使用一个类数组对象来表示的,所以函数接收到的始终都是这个类数组对象,而不关心这个对象里面有什么参数,在函数体内可以是用arguments对象来访问这个类数组对象,可以使用方括号的语法如:arguments[0]、arguments[1]等,这个事实说明一个重要的特点:

  • 命名参数并不是必须的,它只是提供了便利而已。

  • 通过arguments的length属性获知有多少个参数传递给了函数:

function howManyArgs(){

alert(arguments.length);

}

howManyArgs("string", 1); // 2

howManyArgs();  // 0

howManyArgs(1);  // 1

关于arguments有一点比较有意思,就是它的值永远与对应的形式参数同步,即修改了arguments[0]的值会使对应的命名参数的值也发生相应的改变。但是这并不是说他们访问的是相同的内存空间,他们有独立的存储空间,只不过值会同步而已,另外如果值传递一个参数,修改arguments[1]的值是不会改变对应的命名参数的值的,这是应为,arguments.length的长度是由传递参数个数决定的,而不是命名参数的个数决定的,在这里再次强调一次, 命名参数只是提供了便利而已,没有任何其他作用 。

 

没有重载

由于JavaScript中的函数没有函数签名的特征,所以没有重载,不过可以通过检查传入函数的参数的类型和数量作出不同的反应来模拟重载。

javascript基础总结的更多相关文章

  1. JavaScript基础

    JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...

  2. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  3. 前端之JavaScript基础

    前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...

  4. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  5. Javascript基础回顾 之(三) 面向对象

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  6. Javascript基础回顾 之(二) 作用域

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  7. Javascript基础回顾 之(一) 类型

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  8. JavaScript 基础回顾——对象

    JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...

  9. javascript基础01

    javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...

  10. javascript基础02

    javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...

随机推荐

  1. ElasticSearch插件安装Head、Kopf与Bigdesk

    ElasticSearch-Head ElasticSearch-Head 是一个与Elastic集群(Cluster)相交互的Web前台. ES-Head的主要作用 它展现ES集群的拓扑结构,并且可 ...

  2. 【bzoj1179】 Apio2009—Atm

    www.lydsy.com/JudgeOnline/problem.php?id=1179 (题目链接) 题意 给出一张有向图,每个节点有点权.标记一些点,找出一条路径,可以重复经过一条边,使得总点权 ...

  3. PHP局部变量与全局变量

    一.局部变量定义:在函数内部声明,且只能在函数内部调用的变量. 注意:参数也是局部变量的一种. demo1:1 function demo1(){2     $age = 10;3 }4 5 echo ...

  4. js中改变不同的div属性值的操作

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 解决Surface Pro外接移动硬盘经常睡眠的问题

    1. 打开注册表,找到下面的键 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\0012ee47-904 ...

  6. The Joys of Conjugate Priors

    The Joys of Conjugate Priors (Warning: this post is a bit technical.) Suppose you are a Bayesian rea ...

  7. (转)MFC中获得各个类的指针/句柄 ID的总结

    http://www.cnblogs.com/ylhome/archive/2009/10/06/1578478.html 一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard ...

  8. Office Web Apps资源

    http://www.cnblogs.com/poissonnotes/p/3277280.html#!comments http://www.cnblogs.com/poissonnotes/p/3 ...

  9. 编译过程中,termcap.h 文件找不到路径 licli.a终于生成

    编译过程中,termcap.h      文件找不到路径   查看是linux  源码下找不到termcap.h文件   安装了所有关于*cap*的源码包也不起作用     今天终于解决了这个问题,搜 ...

  10. 聊下并发和Tomcat线程数(Updated)

    最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是 ...