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. react-native Simulator com+r不能刷新模拟器

    这个问题是我按了com + shift + K 调出Simulatior 的时候出现的, 然后虚拟机就刷新不了了, 怎么按com+r都不好使. 在Simulatior的菜单栏选择Hardware -- ...

  2. PyCharm断点调试django

    我在用PyCharm开发django程序的时候,对于打印日志调试程序的方式感觉还是有点麻烦和不直观,所以研究了一下断点调试的方法如下: 1.打开你的工程,在菜单栏里找到Run-->Edit Co ...

  3. 获取View的截图-将View转换为Bitmap对象

    开发中,有时候需要获取View的截图来做动画来达到动画流程的目的 原理:将View的内容画到一个Bitmap画布上,然后取出 下面封装了一个从View生成Bitmap的工具类 /** * 将View转 ...

  4. SQL Sever 博客文章目录(2016-07-06更新)

    SQL Server方面的博客文章也陆陆续续的写了不少了,顺便也将这些知识点整理.归纳一下下.方便自己和他人查看. MS SQL 数据类型 三大数据库对比研究系列--数据类型 MS SQL 表和视图 ...

  5. 实现从Oracle增量同步数据到GreenPlum

    简介: GreenPlum是一个基于PostgreSQL数据库开发的MPP架构的数据库仓库,适用于OLAP系统,支持50PB(1PB=1000TB)级海量数据的存储和处理. 背景: 目前有一个业务是需 ...

  6. 机器学习实战笔记(Python实现)-06-AdaBoost

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  7. java中的浮点数

    浮点数值不适用于禁止出现舍入误差的金融计算中.例如,命令System.out.println(2.0-1.1)将打印出0.8999999999999999999999999,而不是人们想象的0.9.其 ...

  8. 【C++】继承(虚基类)

    类的继承与派生 面向对象技术强调软件的可重用性,这种重用性通过继承机制来实现.而在类的继承过程中,被重用的原有类称为基类,新创建的类称为派生类.派生类定义语法格式如下: class <派生类名& ...

  9. windows中,端口查看&关闭进程及Kill使用

    测试过程中遇到的问题,杂记一: 1.netstat -ano | findstr "8001"    查看端口8001被哪个进程占用:由下图可以看出,被进程为3736的占用 2.查 ...

  10. MongoDB数据库的CURD的一些基本语句

    from:http://www.data321.com/shujuku/20160514417/addToSetQianMianBuXuYaoJinXing 插入文档: SQL语句: INSERT I ...