JavaScript笔记

1.认识JavaScript

简介: JavaScript是一种直译式脚本语言,是一种动态类型,基于原型的语言。

c++、java均是基于类的语言。两者的区别:

基于类的(java)

基于原型的(javaScript)

类和实例是不同的事物。

所有对象均为实例。

通过类定义来定义类;

通过构造器方法来实例化类。

通过构造器函数来定义和创建一组对象。

通过new操作符来创建单个对象。

相同。

通过类定义来定义现存类的子类,从而构建对象的层级结构。

指定一个对象作为原型并且与构造函数一起构建对象的层级结构。

遵循类链继承属性。

遵循原型链继承属性。

类定义指定类的所有实例的所有属性。无法在运行时动态添加属性。

构造器函数或原型指定初始的属性集。允许动态地向单个的对象或者整个对象集中添加或移除属性。


  • JavaScript的解释器又称为JavaScript引擎,属于浏览器的一部分。
  • JavaScript是网景公司(Netscape)的产品。

一个完整的JavaScript应该有三部分组成:

1.核心(ECMAScript)
2.文档对象模型(DOM)
3.浏览器对象模型(BOM)

  • 核心部分规定了JavaScript这门语言的语法、变量语句等。

语法

变量和数据类型

关键字和保留字

操作符

控制语句

对象

  • 文档对象模型定义了所有HTML元素的对象和属性,以及访问它们的方法(接口)。
  • 浏览器对象模型提供的是浏览器窗口之间进行交互的对象,核心对象是window。

注: ECMAScript简称ES。目前最新的版本是ES2019,又称ES10。而市面上最常用的是ES2015和ES2016,也就是ES6和ES7。

2.JavaScript引入方法

Javascript的引入方法与CSS引入方法类似,也可以单独写到.js文件中或者写在html中(一般写在<head>标签里),只是写在html页面中时,CSS的标签需要用<style>标签,而Javascript需要用<script>

二者引入方式的区别:

CSS 引入方式

JavaScript 引入方式

内部引入、外部引入

内部引入、外部引入

内部引入、用<style>标签

内部引入、用<script>标签

外部引入.css文件

<link rel="stylesheet" type="text/css" href="mystyle.css">

外部引入.js文件

<script src="myScript.js">

3.JavaScript输出

3.1 弹出警告框

弹出警告窗是window对象的alert方法,每当页面加载完成时,alert语句便会执行一次。

<script>
window.alert("5 + 6 的结果是:");
window.alert(5 + 6);
</script>
3.2 操作HTML元素

使用 document.getElementById(id) 方法可以让 JavaScript 访问某个 HTML 元素以进行操作。
此方法一般结合具体的操作进行。

<!DOCTYPE html>
<html>
<body>

<h1>我的第一个 Web 页面</h1>

<p id="demo">我的第一个段落</p>

<script>
document.getElementById("demo").innerHTML = "段落已修改。";
</script>

</body>
</html>

在上述代码中,

标签里的内容已经被更改为 “段落已修改。” 其中:
document.getElementById(“demo”).innerHTML:表示获取对应标签的内容,可以看做是一个变量。
这个变量可以直接用“=”赋新的值,也可以放到alert( )里用来显示。

3.3 写入到HTML文档

写入到HTML文档的操作一般用作测试。

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>
	
<h1>我的第一个 Web 页面</h1>
<p>我的第一个段落。</p>
<script>
document.write(Date());
</script>
	
</body>
</html>
  • 写入的方法主要是document.write()方法;
  • 若是在网页加载完成后执行此方法(例如此方法绑定了一个点击事件),则此方法写入的内容将覆盖掉整个页面。
3.4 写入到控制台

一般的浏览器按F12或者右键->检查 可以进入调试模式,可以看到Console控制台的一些信息。

<!DOCTYPE html>
<html>
<body>
<h1>我的第一个 Web 页面</h1>

<script>
a = 5;
b = 6;
c = a + b;
console.log(c);
</script>

</body>
</html>

4.JavaScript语法

4.1 字面量

首先科普下字面量 常量 变量的区别: 字面量是指由字母,数字等构成的字符串或者数值,它只能作为右值出现。
(右值是指等号右边的值,如:int a=123这里的a为左值,123为右值。)

常量和变量都属于变量,只不过常量是赋过值后不能再改变的变量,而普通的变量可以再进行赋值操作。

1.数字

可以是整数:1001
可以是小数:3.14
可以是科学计数:123e5 (=123 x 10javascript 解析bin文件_js=12300000 )

2.字符串

可以是双引号:“涛涛”
可以是单引号:‘想想’

3.表达式

可以是加法:5 + 6
可以是乘法:5 * 10

4.数组

可以是数组:[40, 100, 1, 5, 25, 10]

5.对象

可以是对象:{firstName:“John”, lastName:“Doe”, age:50, eyeColor:“blue”}
也可以写成:{
             firstName:“John”,
             lastName:“Doe”,
             age:50,
             eyeColor:“blue”
            }

6.函数

可以是函数:function myFunction(a, b) { return a * b;}
也可以写成:function myFunction(a, b) {
            return a * b;
            }

4.2 变量

变量是一个名称。字面量是一个值。
变量用 var来定义。

var x, length
x = 5
length = 6

注:

  • 一个没有初值的变量,值为undefined。
  • const 关键字表示变量的值不可变。
  • 可以对同一个变量多次赋值,以最后一次的赋值为准。
  • JavaScript中可以不用分号结尾,但为了可读性,一般在每条语句后加上“;”。
4.3 操作符

JavaScript的操作符与其他高级语言相比并无不同。包括赋值运算符和条件运算符。

4.4 关键字

JavaScript中有系统保留关键字,这些关键字不允许用户作为自定义的变量名称。

abstract

else

instanceof

super

boolean

enum

int

switch

break

export

interface

synchronized

byte

extends

let

this

case

false

long

throw

catch

final

native

throws

char

finally

new

transient

class

float

null

true

const

for

package

try

continue

function

private

typeof

debugger

goto

protected

var

default

if

public

void

delete

implements

return

volatile

do

import

short

while

double

in

static

with

4.5 注释

JavaScript注释的方式与java一模一样。
单行注释://
多行注释:/* */

4.6 数据类型
var length = 16;                                  // Number 通过数字字面量赋值 
var points = x * 10;                              // Number 通过表达式字面量赋值
var lastName = "Johnson";                         // String 通过字符串字面量赋值
var cars = ["Saab", "Volvo", "BMW"];              // Array  通过数组字面量赋值
var person = {firstName:"John", lastName:"Doe"};  // Object 通过对象字面量赋值
4.7 JavaScript大小写
  • JavaScript对大小写敏感,敏感,敏感!!!
  • 请注意大小写!
  • 一般都是小写
  • 驼峰命名法:一个名字若只有一个单词组成,首字母小写。若有多个字母组成,第一个单词首字母小写,后面的每一个单词首字母大写。

注: 变量与函数重名的时候,变量生效

var a = 100;
function a() {
    return "function";
}
console.log(a);     //输出 100
console.log(a());   
/*
报错
Uncaught TypeError: a is not a function
    (anonymous function) @test.html:9
*/

由于变量a的优先级高,故即使有函数a(),console.log(a());依然会被编译为变量a,故出错。

5.JavaScript对象

类似于Java,JavaScript也是有对象的,几乎所有的事物都可以看作对象。
一个对象可以是一个变量,也可以是多个变量。

var car = "Fiat";
var car = {type:"Fiat", model:500, color:"white"};
var person = {
    firstName:"John",
    lastName:"Doe",
    age:50,
    eyeColor:"blue"
};
5.1 对象属性

可以说 “JavaScript 对象是变量的容器”。
但是,我们通常认为 “JavaScript 对象是键值对的容器”。
键值对通常写法为 name : value (键与值以冒号分割)。
键值对在 JavaScript 对象通常称为 对象属性。

5.2 访问对象属性

两种方式访问对象属性:
1.对象名.属性名

person.lastName;

2.对象[“属性名”]

person["lastName"];
5.3 对象方法

对象方法也是对象中的一个属性。

5.4 访问对象方法

两种方式访问对象方法:
1.对象名.方法名()

name = person.fullName();

2.对象名.方法名

name = person.fullName;

如果fullName是一个方法,在通过对象访问时没有加括号( ),则返回结果不是函数的返回结果,而是把方法体整个代码作为一个字符串返回。

注: 类似数组,对象在创建时也可以先创建空对象,再根据需要逐一加入属性。

var person=new Object();
	person.name='小明';
	person.sex='男';
	person.method=function(){
  		  return this.name+this.sex;
}

6.JavaScript函数

函数也可以称之为方法,是所有程序设计语言里需要实现逻辑功能最重要的部分。

6.1 普通函数

<script>
function functionname( )
{
// 执行代码
}
</script>

注:

  • 函数只有在调用时才会执行函数里的代码。而调用方式多种多样,可以设置为点击按钮执行,或者网页加载完自动执行等。
  • 与HTML不同,JavaScript严格区分大小写。function必须小写。
6.2 带有参数的函数

<script>
function myFunction(var1,var2)
{
代码
}
</script>
这些参数可以直接在函数里使用。
实例:

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<p>请点击其中的一个按钮,来调用带参数的函数。</p>
<button onclick="myFunction('Harry Potter','Wizard')">点击这里</button>
<button onclick="myFunction('Bob','Builder')">点击这里</button>
<script>
function myFunction(name,job)
{
	alert("Welcome " + name + ", the " + job);
}
</script>

</body>
</html>

在调用有参数的函数时,必须传入实参。且实参的类型需要与形参的顺序一致。

6.3 带有返回值的函数
<script>
function myFunction()
{
    var x=5;
    return x;
}
</script>

在使用 return 语句时,函数会停止执行,并返回指定的值。
注: 函数停止执行,不会影响其他js代码继续执行。

仅仅希望退出函数时 ,也可使用 return 语句。返回值是可选的:

function myFunction(a,b)
{
    if (a>b)
    {
        return;
    }
    x=a+b
}

若a>b,则什么也不做,直接退出函数。
若a<=b,计算a+b的值给x。

6.4 局部变量和全局变量

局部变量

全局变量

定义在函数内部

定义在函数外部

只有本函数才能访问

所有函数都可以访问

函数运行完删除

页面关闭后删除