脚本语言JavaScript

JavaScript是一个编程语言,允许用户在浏览器页面上完成复杂的事情。浏览器页面并不总是静态的,往往显示一些需要动态更新的内容,交互式地图,动画,以及视频等。一个完整的JavaScript包括核心(ECMAScript),应用程序编程接口即API(比如DOM(DocumentObjectModel),BOM(BrowserObjectModel)),以及其他第三方API。JavaScript与HTML、CSS一同配合共同完成一个复杂页面的显示。

node:JS运行环境,是JS解析器

用户界面输入node直接进入node环境,前提必须安装nodejs

1)repl环境:

r:read 读取 e:evel 解析运行

p:print 打印 l:loop 循环

运行过程打印10 结果undefined

2)使用node命令执行一个文件 .js后缀名

统一规则:javascript 用来本地表单验证

组成部分:

1)核心js:ECMAScript5
2)dom:document object model 文档对象模型

3)bom:browser object model 浏览器对象模型 (弹框:告警框,对话框,提示框;定时器)

特点:

1)脚本语言

2)解释性语言 (需要被解析执行,被js解析器解析执行)

3)是一种弱类型语言:

var a=10;//声明一个变量

a="hello";//可以改变类型

java是一种强类型语言:

int a=10;//int类型

a:"hello";//报错,对语法规范要求严格

4)从上到下执行

代码顺序:

function say(){} //声明一个方法

say(); //调用方法

或者

say();

function say(){}

解析:优先解析函数的声明,再解析使用var声明的变量,只解析声明,不解析变量的赋值,

function say(){} //声明一个方法

say(); //调用方法

执行:按照解析之后的顺序从上到下执行

5)大小写敏感

var a=10;

console.log(A);//定义的a,打印A不存在

基础语法

1.变量的声明:

变量是一个值的容器,该容器的值可以随时改变。ECMAScript的变量是弱类型(松散类型),可以用来保存任何类型的数据。定义变量时使用var关键字。

1)标识符规则:

  • 只能由字母、数字、下划线以及$组成
  • 不能以数字开头
  • 建议使用驼峰式命名 var userAgeTotal=""; 从第二个单词开始,首字母大写。
  • 不能使用关键字或者保留字

2)var 变量(es5)

  • 声明 var message;//声明变量,不赋值
  • 初始化 message="hello"//声明的同时赋值,从右向左赋值,先准备一个值hello--声明一个变量var message-----将hello赋值给message
  • 声明并初始化 var message="hello";//声明的同时赋值
  • 定义多个变量 var message="hello",found=false,age=29;//同时声明并赋值多个变量

3)let (es6)

  • 使用let声明的变量,只在当前作用域块内有效
  • 不能使用let重复声明变量,但是不在同一作用块内可以
  • 使用let声明的变量不能解析提升
变量a不能被解析,必须在let 之后使用

4)const(es6)

  • 使用const声明的变量,只在当前作用域块内有效
  • 使用const声明的变量,一旦声明,变量值不可修改
  • 如果属性值为引用数据类型,值的引用地址不变的情况下,可以修改内容
如果又重新new了一个student 会报错,相当于又建了一个名为student的地址

2.注释 为了维护代码可读性,方便管理

与绝大多数语言类似,JavaScript也需要注释来说明其代码含义,或者用来进行代码调试,注释后的代码会被浏览器忽略不被执行。

单行注释://注释内容 可以嵌套


多行注释:/*注释内容*/ 不可以嵌套使用,会报错

3.语句

每一个语句的结尾使用英文状态下的分号 ;

jQuery.js 有框架格式

jQuery.min.js 所有代码在一行,被压缩了

在网页中使用JavaScript 从上到下执行

1.内部JavaScript

编写好HTML,在<head>标签体中添加<script>元素,然后将JS代码填写进来即可。

2.外部JavaScript

单独新建一个后缀名为.js的JS文件,编写好HTML文件,在<head>标签体内添加<script>元素,使用script标签的src属性将将JS文件导入进来。

src属性和内部JS属性不能共存,可以重新定义script标签

3.直接在node环境下使用JavaScript

全局变量局部变量

作用域:当前变量所能活动的区域 {}

使用了var操作符,并且声明在函数内部的变量,即为局部变量;
其他声明均为全局变量;

全局变量
局部变量

数据类型

typeof(a) 或者 typeof a: 检测JS中的数据类型

6种数据类型:

  • 5种基本数据类型(简单数据类型):栈区 先存储的在下面 先进后出
    • undefined:未定义
      • var a;
      • var a=undefined;
      • console.log(typeof b); b没有被定义,返回b的数据类型为undefined
      • undefined派生自null null==undefined:true
    • null :空引用数据类型 即将指向一个引用数据类型,但此时未指向
      • var a=null;
    • number :所有的数值类型。整数/浮点数
      • 除了number 还有NaN:NOT A NUMBER
      • isNaN(a): 当前a变量是不是不是一个数,不是一个数返回true,是一个数 返回false
      • var a="hello"/5; //NaN
      • infinity:无穷
      • var a=10/0; 正无穷
      • var a=-10/0; 负无穷 -infinity
      • isFinite(a): 返回a变量是否为无穷大的数,不是一个无穷大的数返回true
    • string:字符串类型,需要使用单引号或者双引号括起来
      • var a='true';
      • var a='1';
      • var a='hello';
      • json字符串 {"name":"list","age":12}
      • ``字符串的拼接
    • boolean:布尔类型,取值为true/false, 通常用于条件判断
      • var a=false;
      • var a=true;
undefined
null
number
string
string中的``字符串拼接
  • 1种引用数据类型(复杂数据类型):堆区
    • 对象object 对象是模拟现实生活的对象,对象由键值对组成,通过使用大括号将所有键值对括起来。
    • 数组Array 数组是一个特殊的对象,包含了多个值,值与值之间使用逗号分隔开,所有的值通过中括号括起来。
      • var myNameArray=['Chris','Bob','Jim'];
      • var myNumberArray=[10,15,40];
    • 函数Function 函数是代码执行单元,用于实现某些特殊的功能。
      • function add(a,b){ return a+b; }
object

属性/方法:

  • toString(): 将实例对象转换为字符串
  • valueOf(): 将实例对象值打印
  • constructor :构造者
对象类型转换成字符串结果为【object object】