一、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基础

1.JS的引入方式

// 1.使用javascript:前缀构建执行JavaScript代码的URL
<a href="javascript:alert("js已运行");">运行javascript</a> // 2.使用<script> </script>包含
<script>
alert("js已运行");
</script> // 3.导入javascript文件
<script src="test.js" type="text/javascript"></script>

2.JS变量

 1.  javascript是弱类型语言,使用变量前,可以无须定义,想使用某个变量时直接使用即可。归纳起来,JavaScript支持两种方式来引入变量。

  隐式定义:直接给变量赋值。

  显示定义:使用var关键字定义变量。

2. 一行可以声明多个变量.并且可以是不同类型

3. 变量命名,首字符只能是字母,下划线,$美元符 三选一,余下的字符可以是下划线、美元符号或任何字母或数字字符且区分大小写,x与X是两个变量 

3.常量和标识符

常量 :直接在程序中出现的数据值

标识符:

  1. 由不以数字开头的字母、数字、下划线(_)、美元符号($)组成
  2. 常用于表示函数、变量等的名称
  3. 例如:_abc,$abc,abc,abc123是标识符,而1abc不是
  4. JavaScript语言中代表特定含义的词称为保留字,不允许程序再定义为标识符

4.JS的数据类型

// 1.JavaScript基本数据类型
number // 数字类型
boolean // 布尔型
string // 字符串类型
undefined //undefined
null // object
// 2.JavaScript复合数据类型
object // 对象
Array // 数组

数字类型:

  • 不区分整型数值和浮点型数值;

字符串类型(string):

是由Unicode字符、数字、标点符号组成的序列;字符串常量首尾由单引号或双引号括起;JavaScript中没有字符类型;常用特殊字符在字符串中的表达;
字符串中部分特殊字符必须加上右划线\;常用的转义字符 \n:换行 \':单引号 \":双引号 \\:右划线

布尔类型(bolean):

Boolean类型仅有两个值:true和false,也代表1和0,实际运算中true=1,false=0
布尔值也可以看作on/off、yes/no、1/0对应true/false
Boolean值主要用于JavaScript的控制语句,例如:

var x = 2;
if ( x == 1 ){
alert("1") ;
}else{
alert("2") ;
}

Null 和 Undefined类型

Undefined类型

1.Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。

2.当函数无明确返回值时,返回的也是值 "undefined";

Null类型

另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

 四、运算符

运算符分类

// 1.算数运算符
+ - * / % ++ --
// 2.比较运算符
> >= < <= != == === !==
// 3.逻辑运算符
&& || !
// 4.赋值运算符
= += -= *= /=

js不同于python,是一门弱类型语言

能够进行数据转换的叫做弱类型
console.log('1'==1) //True
console.log('1'===1) //False 强类型
print(1='1') //False
1 静态类型语言
2 一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java 和 C 是静态类型语言。
3 动态类型语言
4 一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScript 和 Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。
5 强类型语言
6 一种总是强制类型定义的语言。Java 和 Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串去应用。
7 弱类型语言
8 一种类型可以被忽略的语言,与强类型相反。JS 是弱类型的。在JS中,可以将字符串 '12' 和整数 3 进行连接得到字符串'123',然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。
9 所以说 Python 既是动态类型语言 (因为它不使用显示数据类型声明),又是强类型语言 (因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)。

静态动态、强类型弱类型

五、流程控制

  • 顺序结构(从上向下顺序执行)
  • 分支结构
  • 循环结构

分支结构:

 1. if.....else结构:

if (表达式1) {
语句1;
}else if (表达式2){
语句2;
}else if (表达式3){
语句3;
} else{
语句4;
}

2.switch-case结构

switch基本格式
switch (表达式) {
case 值1:语句1;break;
case 值2:语句2;break;
case 值3:语句3;break;
default:语句4;
}

switch比else if结构更加简洁清晰,使程序可读性更强,效率更高。

循环语句

for循环:(推荐使用)

语法规则:

    for(初始表达式;条件表达式;自增或自减)
{
执行语句
……
}

最新文章

  1. 瞬间记住Javascript中apply与call的区别
  2. SFC中的问题描述
  3. BZOJ4034——[HAOI2015]T2
  4. soapui中文操作手册(五)----入门与安全测试
  5. ch2 MySQL 架构组成
  6. C#之参数线程
  7. php大力力 [010节]PHP常量
  8. Error 1937.An error occurred during the installation of assembly...
  9. Red and Black(poj 1979 bfs)
  10. Linux解决xhost: unable to open display
  11. 【LeetCode题意分析&amp;解答】41. First Missing Positive
  12. KMP算法的优化与详解
  13. java基础解析系列(十一)---equals、==和hashcode方法
  14. jQuery拓展简易快速实现触摸效果
  15. https遇到自签名证书/信任证书
  16. JAVA基础知识总结:一到二十二全部总结
  17. empty 与 remove 的区别
  18. js获取上一个兄弟元素
  19. select选中事件
  20. Java Web中涉及的编解码

热门文章

  1. BZOJ2213 [Poi2011]Difference 【乱搞】
  2. 【ZOJ3899】State Reversing 解题报告
  3. nginx 配置 phpmyadmin
  4. unity生成Android apk
  5. configServer的高可用
  6. kernel-init-bash
  7. tp5.1 入口文件即报错
  8. JS--数组和字典
  9. css基础--简单介绍css
  10. linux网络编程框架