javascript概述:

javascript历史:
* 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言)
* Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.
后改名叫Javascript
* 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript.
* 为了统一三家,ECMA(欧洲计算机制造协会)定义了ECMA-262规范。
国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。
从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。EcmaScript是规范. ECMAScript
尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。
实际上,一个完整的JavaScript 实现是由以下 3 个不同部分组成的:
* 核心(ECMAScript)
* 文档对象模型(DOM) Document object model (整合js,css,html)
* 浏览器对象模型(BOM) Broswer object model(整合js和浏览器)

Javascript 在开发中绝大多数情况是基于对象的.也是面向对象的.
在简单的说,ECMAScript 描述了一下内容:
* 语法
* 类型
* 语句
* 关键字
* 保留字
* 运算符
* 对象 (封装,继承,多态) 基于对象的语言,使用对象。

二 javascript 的基础
2.1 变量
x=5
y=6
z=z+y
上面表达式中的x y z,在javascript中,这些字母被称为变量。 js中变量的总结:
--关于js中变量的总结:
(1) 变量是弱类型的(很随便)
(2) 声明变量时不用声明变量类型 全部使用关键字:var
[这里需要注意:如果加上关键字var 声明的变量即是:局部变量;如果不加var 则声明的变量是全局变量]
(3) 变量名 命名的时候,基本遵循其他语言一致的原则:字母数字下划线构成,数字不能开头!
  js需要注意的是:变量名中字母区分大小写,即:解释器解析的时候,大小写代表的变量不同
(4) 命名规范原则:驼峰式,小驼峰,匈牙利类型标记法。。。
匈牙利类型标记法:
在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),
说明该变量的类型。例如,i 表示整数,s 表示字符串,
如下所示“Var iMyTestValue = 0, sMySecondValue = "hi";
2.2 基础规范
(1. 每行代码结束,可以不加分号,没有分号,默认会以换行符作为每行的结束;
[但是,为了代码规范,建议在每行的结尾添加分号]
(2. 注释:
单行注释:行前加://
多行注释:和CSS一样,/**/
(3. 使用{}来封装代码块

2.3 常量和标识符
常量:直接在程序中初相的数据值。
标识符:
  1. 由不以数字开头的字母,数字,下划线,$符组成
  2. 常用于表示函数、变量等的名称
  3. Javascript中 代表特定含义的词称为保留字,不允许程序再定义为标识符。
 --【ECMA V3标准保留的关键字有】
[break case catch continue default delete do else false
finally for function if in instanceof new null return switch
this throw true try typeof var void while with 等]

2.4 数据类型
javascript 中的数据类型,包括两种:
基本数据类型:Number Null String Undefined Boolean
引用数据类型:object 上述两种数据类型,在内存中的存放位置不同;
基本数据类型存放在内存中的 栈
引用数据类型,也就是对象,存放在内存中的 堆
而对于引用地址的具体编号值(类似于指针),也是存放在 栈 数字类型(Number)
简介:
最基本的数据类型
不区分整形数值和浮点型数值
所有数字都采用64位浮点格式存储,相当于Java和C语言中的double双精度
能表示的最大值是:±1.7976931348623157 x 10308
能表示的最小值是:±5 x 10 -324 整数:
在javascript中,10进制的整数,由数组的序列组成。
精确表达的范围是;
-9007199254740992 (-253) 到 9007199254740992 (253)
超出范围的整数,精确度将受影响 浮点数:
使用小数点记录数据
使用指数记录数据 例如:4.3e23 = 4.3 x 1023 16进制和8进制的数字 表达
    16进制的前面加上0x,八进制的前面加上0
16进制的数是由0-9,A-F等16个字符组成
    8进制数由0-7的8个数字组成
# 2进制: 1111 0011 1101 0100   <-----> 16进制:0xF3D4 <-----> 10进制:62420
# 2进制: 1 111 001 111 010 100 <-----> 8进制:0171724
字符串(String)
简介:
string 是由Unicode字符、数字、标点符号组成的序列
字符串常量首尾由单引号或双引号括起
    javascript中没有字符类型
特殊字符的转义需加:反斜杠\
常见的转义字符:\n 换行 \'单引号 \"双引号 \\反斜杠 String数据类型的使用
特殊字符的使用方法和效果
    Unicode的插入方法
实例:
<script>
var str="\u4f60\u597d\n欢迎来到\"JavaScript世界\"";
alert(str);
</script>
        布尔类型(Boolean)
简介:
     Boolean类型仅有两个值:true 和 false,也代表1和0,
实际运算中 true=1,false=0
[注意:这里区分Python中的布尔值,Python中的true 或者 false,首字母要大写]
Boolean值主要用于JavaScript的控制语句,
 例如:
(1)if (x==1){
y=y+1;
} else {
y=y-1;
}
(2)alert(Boolean(1))
Null & Undefined
Undefined类型
      Undefined类型只有一个值,即:undefined
当声明的变量未初始化时(变量未定义或者定义了没有给赋值),该变量的默认值是:undefined
当函数无明确返回值时,返回的也是“undefined” Null类型
      undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
尽管这两个值相等,但它们的含义不同。undefined用来表示声明了变量,但未对其初始化时赋予该变量的值;
      null 则用于表示尚未存在的对象。
如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。 数据类型转换
  JavaScript属于松散类型的程序语言
变量在声明的时候并不需要指定数据类型
变量只有在赋值的时候才会确定数据类型
表达式中包含不同类型数据则在计算过程中会强制进行类别转换 数字 + 字符串:数字转换为字符串
数字 + 布尔值:true转换为1,false转换为0
字符串 + 布尔值:布尔值转换为字符串true或false 强制类型转换函数
函数parseInt: 强制转换成整数 例如parseInt("6.12")=6 ; parseInt(“12a")=12 ; parseInt(“a12")=NaN ;parseInt(“1a2")=1
函数parseFloat: 强制转换成浮点数 parseFloat("6.12")=6.12
函数eval: 将字符串强制转换为表达式并返回结果 eval("1+1")=2 ; eval("1<2")=true 类型查询函数(typeof)
ECMAScript 提供了 typeof 运算符来判断一个值是否在某种类型的范围内。
可以用这种运算符判断一个值是否表示一种原始类型:如果它是原始类型,还可以判断它表示哪种原始类型。
函数typeof :查询数值当前类型
 (string / number / boolean / object )
例如typeof("test"+3) "string"
例如typeof(null) "object "
例如typeof(true+1) "number"
例如typeof(true-false) "number"
例如typeof('test'+true) "string" ECMAScript 基本运算
加(+)、 减(-)、 乘(*) 、除(/) 、余数(% ) 加、减、乘、除、余数和数学中的运算方法一样 例如:9/2=4.5,4*5=20,9%2=1 - 除了可以表示减号还可以表示负号 例如:x=-y
+ 除了可以表示加法运算还可以用于字符串的连接 例如:"abc"+"def"="abcdef" 递增(++) 、递减(--)
假如x=2,那么x++表达式执行后的值为3,x--表达式执行后的值为1
i++相当于i=i+1,i--相当于i=i-1
递增和递减运算符可以放在变量前也可以放在变量后:--i
var i=1;
console.log(i++); 巧记:i++表示先赋值,后计算
    console.log(++i); ++i表示先计算,后赋值
    console.log(i--);
console.log(--i); 一元运算
  var a=1;
a=-a; //a=-1 var c="10";
alert(typeof (c));
c=+c; //类型转换
    alert(typeof (c)); var d="jesson";
d=+d;
alert(d); //NaN:属于Number类型的一个特殊值,当遇到将字符串转成数字无效时,就会得到一个NaN数据
    alert(typeof(d)); //Number //NaN特点:
var n=NaN;
alert(n>3);
alert(n<3);
alert(n==3);
alert(n==NaN);
alert(n!=NaN); //NaN参与的所有的运算都是false,除了!= ECMAScript 逻辑运算符
等于 ( == ) 、不等于( != ) 、 大于( > ) 、 小于( < ) 
大于等于(>=) 、小于等于(<=)
与 (&&) 、或(||) 、非(!)
1 && 1 = 1 1 || 1 = 1
1 && 0 = 0 1 || 0 = 1
0 && 0 = 0 0 || 0 = 0 !0=1
!1=0 逻辑 AND 运算符(&&)
逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。
注意:
如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:
        * 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
        * 如果两个运算数都是对象,返回第二个对象。
        * 如果某个运算数是 null,返回 null。
        * 如果某个运算数是 NaN,返回 NaN。
        * 如果某个运算数是 undefined,返回undefined。 逻辑 OR 运算符(||)
与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:
      * 如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
      * 如果两个运算数都是对象,返回第一个对象。
      * 如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
      * 如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
      * 如果某个运算数是 undefined,返回undefined。 ECMAScript 赋值运算符
赋值 =
JavaScript中=代表赋值,两个等号==表示判断是否相等
例如,x=1表示给x赋值为1
if (x==1){...}程序表示当x与1相等时
    if(x==“on”){…}程序表示当x与“on”相等时
配合其他运算符形成的简化表达式
例如i+=1相当于i=i+1,x&=y相当于x=x&y ECMAScript等性运算符
执行类型转换的规则如下:
    * 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
    * 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
    * 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
    * 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。    在比较时,该运算符还遵守下列规则:
    * 值 null 和 undefined 相等。
    * 在检查相等性时,不能把 null 和 undefined 转换成其他值。
    * 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
    * 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。 ECMAScript 关系运算符(重要)
(1)比较数字和字符串:另一种棘手的状况发生在比较两个字符串形式的数字时,比如:
    var bResult = "25" < "3";
alert(bResult); //输出 "true"
上面这段代码比较的是字符串 "25" 和 "3"。
两个运算数都是字符串,所以比较的是它们的字符代码("2" 的字符代码是 50,"3" 的字符代码是 51)。
  (2)不过,如果把某个运算数该为数字,那么结果就有趣了:
    var bResult = "25" < 3;
alert(bResult); //输出 "false"
这里,字符串 "25" 将被转换成数字 25,然后与数字 3 进行比较,结果不出所料。 关系运算符 总结:
    * 比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.
* 比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较. 全等号和非全等号 ===
等号和非等号的同类运算符是全等号和非全等号。
这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。    void()
void 运算符对任何值返回 undefined。该运算符通常用于避免输出不应该输出的值,
例如,从 HTML 的 <a> 元素调用 JavaScript 函数时。
要正确做到这一点,函数不能返回有效值,否则浏览器将清空页面,只显示函数的结果。
例如:<a href="javascript:window.open('about:blank')">Click me</a>
如果把这行代码放入 HTML 页面,点击其中的链接,即可看到屏幕上显示 "[object]"。
这是因为 window.open() 方法返回了新打开的窗口的引用。
然后该对象将被转换成要显示的字符串。
要避免这种效果,可以用 void 运算符调用 window.open() 函数:
    <a href="javascript:void(window.open('about:blank'))">Click me</a>
这使 window.open() 调用返回 undefined,它不是有效值,不会显示在浏览器窗口中。 提示:请记住,没有返回值的函数真正返回的都是 undefined。 控制语句
if 条件控制语句:
if-else基本格式:
if (表达式){
语句1;
......
}else{
语句2;
.....
}
功能说明:
如果表达式的值为true则执行语句1,
否则执行语句2 if可以单独使用。 switch 选择控制语句
switch基本格式:
switch (表达式) {
case 值1:语句1;break;
case 值2:语句2;break;
case 值3:语句3;break;
default:语句4;
}
switch比else if结构更加简洁清晰,使程序可读性更强,效率更高。 总结:
1.switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化
   2.switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选择执行哪一个case的语句块
   3.if..else 的判断条件范围较广,每条语句基本上独立的,每次判断时都要条件加载一次。
所以在多路分支时用switch比if..else if .. else结构要效率高。 循环控制语句:
for循环基本格式:
for (初始化;条件;增量){
语句1;
...
}
功能说明:
实现条件循环,当条件成立时,执行语句1,否则跳出循环体!
实例:
  for (var i=1;i<=7;i++){
document.write("<H"+i+">hello</H "+i+"> ");
document.write("<br>");
}
----------------------------------------------
var arr=[1,"hello",true]//var dic={"1":"111"}
for (var i in arr){
console.log(i)
console.log(arr[i])
}   while 循环控制语句
  while循环基本格式:
  while (条件){
语句1;
...
}
功能说明:
运行功能和for类似,当条件成立循环执行语句花括号{}内的语句,否则跳出循环。 练习:分别用for循环和while循环计算出1-100的和? 异常处理:
try {
//这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
}
catch (e) {
// 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
//e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
//无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}
注:主动抛出异常 throw Error('xxxx') 

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. VS2012 Unit Test 个人学习汇总(含目录)

    首先,给出MSDN相关地址:http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.TestTools.UnitTesting.a ...

  2. Android进阶--Acticivity的启动模式

    一.引言 我们在多次启动同一个Activity时,系统默认会重复创建多个实例,这样看上去便十分的愚蠢,所以android在设计时提供了启动模式来修改系统的默认行为.目前有四种启动模式:standard ...

  3. android AES 加密

    import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import jav ...

  4. MySQL 导出数据

    MySQL中你可以使用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上. 使用 SELECT ... INTO OUTFILE 语句导出数据 以下实例中我们将数据表 cnbl ...

  5. [Hadoop in Action] 第2章 初识Hadoop

    Hadoop的结构组成 安装Hadoop及其3种工作模式:单机.伪分布和全分布 用于监控Hadoop安装的Web工具   1.Hadoop的构造模块   (1)NameNode(名字节点)       ...

  6. tomcat加密

    tomcat做虚拟主机的最好方法是复制,运行多个tomcat,避免tomcat挂掉,同时几个业务也挂掉 针对tomcat7,tomcat未实现 生成私钥证书文件: mkdir -p /usr/loca ...

  7. 【Linux】重定向与管道

    重定向 redirection 每个命令有输入源和输出目的地,默认行为,是标准输入和标准输出.大多数情况,标准输入是键盘,标准输出是屏幕.可以为单独的操作修改输入和输出,这就是重定向.重定向可以使某个 ...

  8. CANopen学习——感性认知

    看不懂的知识硬着头皮也要看.读了当时虽然不理解,但脑子里对其相关名词.概念有印象,继续看下去,多读几遍,一定会在某个地方顿悟.  CAN总线只是定义了物理层和数据链路层,并没有定义应用层.这么优秀的总 ...

  9. 破解 Windows 下Markdown 编辑器 MarkdownPad 2

    MarkdownPad 是 Windows 平台下一款优秀的 Markdown 编辑器,本文简单介绍 Markdown 以及使用一种方法破解 MarkdownPad 使其升级到专业版.该方法仅限于教育 ...

  10. [No000095].Net入门级逆向工程-1.SpreadsheetGear汉化

    一.SpreadsheetGear汉化 最近,我们的有个项目要用到表格功能,由于历(la)史(ji)遗(kuang)留(jia)的问题,我们不得不用第三方的一个插件SpreadsheetGear来实现 ...