一、语法

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

  • 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. TortoiseSVN客户端如何更改新的URL

    问题: 我们的服务器换了新的URL地址,这时候我们本地的SVN访问帐号和地址就要重新定义了. 解决步骤: 1:重新定义SVN的URL,右键(TortoiseSVN) → Relocate → 输入你新 ...

  2. FOJProblem 2214 Knapsack problem(01背包+变性思维)

    http://acm.fzu.edu.cn/problem.php?pid=2214 Accept: 4    Submit: 6Time Limit: 3000 mSec    Memory Lim ...

  3. spring bean实例化方式

    注意:xml配置中bean节点下scope属性默认值为singleton(单例),在需要多例的情况下需要配置成prototype spring提供三种实例化方式:默认构造.静态工厂.实例工厂 一.默认 ...

  4. Common Pitfalls In Machine Learning Projects

    Common Pitfalls In Machine Learning Projects In a recent presentation, Ben Hamner described the comm ...

  5. web.xml文件中的web-app元素 部署

    [转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...

  6. spring 标注 详解

    http://snowolf.iteye.com/blog/578452 http://snowolf.iteye.com/blog/578452  非常棒的入门读物

  7. Linux 下源码包安装MariaDB

    .8.5]# cd cmake-2.8.5 [root@zabbix_server cmake-2.8.5]# ./bootstrap [root@zabbix_server cmake-2.8.5] ...

  8. 新浪微博客户端(20)-集成MJRefresh

    HomeViewController.m /** 集成下拉刷新控件 */ - (void)setupPullToRefreshView { __unsafe_unretained UITableVie ...

  9. 调用gluNurbsCurve绘制圆弧

    <OpenGL编程指南>第12章第3小结专门介绍调用GLU绘制NURBS曲线或曲面,很可惜的是并未给出绘制圆弧的例子.网上可以找到很多绘制整个园的例子,却没圆弧例子,自己瞎折腾了2个礼拜, ...

  10. JSON做下拉表格

    主页面,5-18j.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...