javascript快速入门

JavaScript快速入门

1.JavaScript简介

JavaScript(js)是一种具有函数优先特性的轻量级,解释性或者说即时编译型的编程语言。虽然作为web页面的脚本语言被人所熟知,但是它也被用到了很多非浏览器环境中,例如Node.js,Apache,CouchDB,Adobe Acrobat等。进一步说,JavaScript是一种基于原型,多范式,单线程的动态语言,并且支持面向对象,命令式和声明式(如函数式编程)风格。

JavaScript的动态特性包括运行时对象的构造,变量参数列表,函数变量,动态脚本创建(通过eval),对象内枚举(通过for…in和object工具方法)和源代码恢复(JavaScript函数会存储其源代码文本,可以使用toString()进行检索)。

2.变量(Variable)

变量

变量是存储值的容器,要声明一个变量,先输入关键字 let 或 var ,然后输入合适的名称(驼峰命名法):

let myVariable;

备注: 行末的分号表示当前语句结束,不过只有在单行内需要分割多条语句时,这个分号才是必须的。然而,一些人认为每条语句末尾加分号是一种好的风格。

备注:几乎任何内容都可以作为变量名。

备注:JavaScript对大小写敏感,所以变量命名中大小写不同对应的变量是不同的。

var 和 let 的区别

首先,var支持变量提升,let并不支持,意思是如果你编写了一个声明并初始化变量的多行JavaScript程序,你可以在初始化一个变量之后用 var 声明它,它仍然可以工作。比如:

myName = 'eason';

function logName() {
  console.log(myName);
}

logName();

var myName;

备注:只有在web文档中运行多行 JavaScript 时才会有这种效果,当在 JavaScript 控制台中键入单独的行,这将不起作用。

其次,当你使用 var 时,可以根据需要多次声明相同名称的变量,但是 let 不行。

比如:下面的代码是被允许的:

var myName = 'eason';
var myName = 'andy';

但下面的代码将会报错:

let myname = 'eason';
let myname = 'andy';

综上所述,在代码中,建议尽可能使用 let 对变量进行声明,因为除非你需要用代码支持旧版本的Internet Explorer(它直到第11版才支持 let ,现代的Windows Edge浏览器很好的支持该语法),并没有理由用var。

const

1.const与 let 类似,但不能重新赋值;

2.const只能在声明时赋值;

变量的数据类型

变量解释示例
String字符串(一串文本):字符串的值必须用引号(单双均可,必须成对)扩起来。let myVariable = '李雷';
Number数字:无需引号。let myVariable = 10;
Boolean布尔值(真 / 假): true/false 是 JS 里的特殊关键字,无需引号。let myVariable = true;
Array数组:用于在单一引用中存储多个值的结构。let myVariable = [1, '李雷', '韩梅梅', 10]; 元素引用方法:myVariable[0], myVariable[1] ……
Object对象:JavaScript 里一切皆对象,一切皆可储存在变量里。这一点要牢记于心。let myVariable = document.querySelector('h1'); 以及上面所有示例都是对象。

3.注释

注释内容同很多语言一样分为多行注释和单行注释;

/*
这是多行注释。
这是多行注释.
*/

// 这是单行注释。

4.运算符

运算符是一类数学符号,可以根据两个值(或变量)产生结果。一下表格为一些最简单的运算符。

注:这里说的“两个变量”是不准确的,因为除了二元运算符以外,还有一元运算符和三元运算符,比如取非运算就是一元运算符;

运算符解释符号示例
将两个数字相加,或拼接两个字符串。+6 + 9;"Hello " + "world!";
减、乘、除这些运算符操作与基础算术一致。只是乘法写作星号,除法写作斜杠。-, *, /9 - 3;8 * 2; //乘法在 JS 中是一个星号9 / 3;
赋值为变量赋值(你之前已经见过这个符号了)=let myVariable = '李雷';
等于测试两个值是否相等,并返回一个 true/false (布尔)值。===let myVariable = 3;myVariable === 4; // false
不等于和等于运算符相反,测试两个值是否不相等,并返回一个 true/false (布尔)值。!==let myVariable = 3;myVariable !== 3; // false
取非返回逻辑相反的值,比如当前值为真,则返回 false!原式为真,但经取非后值为 falselet myVariable = 3;!(myVariable === 3); // false

完整运算符列表参见表达式和运算符 - JavaScript | MDN (mozilla.org)

5.条件语句

条件语句是一种代码结构,用来测试表达式的真假,并根据测试结果运行不同的代码。一个常用的条件语句是 if ... else。例:

let iceCream = 'chocolate';
if (iceCream === 'chocolate') {
  alert('我最喜欢巧克力冰激淋了。');
} else {
  alert('但是巧克力才是我的最爱呀……');
}

if(…)中的表达式进行测试,用等于运算符来比较变量 iceCream 与字符串 ’chocolate‘ 是否相等。如果返回 true ,则运行第一个代码块;如果返回 false ,则跳过第一块直接运行else 之后的第二个代码块。

6.函数(Function)

函数用来封装可复用的功能。

语法

JavaScript通过关键词 function 对其定义,其后是函数名和括号;

函数名可包括字母,数字,下划线和美元符号($)(规则与变量名相同)。

圆括号可包括由逗号分隔的参数:

在这里插入图片描述

由函数执行的代码被放置在花括号中:{}

在这里插入图片描述

函数参数(Function parameters)是在函数定义中所列的名称。

函数参数(Function arguments)是当调用函数时由函数接收的真实的值。

函数调用

函数中的代码将在其他代码调用该函数时执行:

  • 当事件发生时(当用户点击按钮时)
  • 当 JavaScript 代码调用时
  • 自动的(自调用)

函数返回

当JavaScript到达 return 语句,函数将停止执行。

如果函数被某条语句调用,JavaScript将在调用函数之后“返回”执行代码。

函数通常会计算出返回值。这个返回值会返回给调用者:

例如:

var x = myFunction(7, 8);        // 调用函数,返回值被赋值给 x

function myFunction(a, b) {
    return a * b;                // 函数返回 a 和 b 的乘积
}

x 的结果将等于56;

()运算符调用函数

在下面的例子中,toCelsius 引用的是函数对象,而 toCelsius() 引用的是函数结果。

function toCelsius(fahrenheit) {
    return (5/9) * (fahrenheit-32);
}

document.getElementById("demo").innerHTML = toCelsius;
document.getElementById("demo").innerHTML = toCelsius(77);

7.对象

真实生活中的对象,属性和方法

例如:

在这里插入图片描述

汽车作为一个对象,所有的汽车拥有同样的属性,但是不同的汽车拥有不同的属性值(911真帅嗷);

所有的汽车拥有相同的方法,但是方法会在不同时间被执行

JavaScript对象

对比真实生活中的对象,JavaScript里面的对象也包含很多属性和方法;

JavaScript的对象是被命名值的容器;

对象也属于变量,但对象包含了很多的值,值通过键值对的方式来书写:

var car = {type:"porsche",model:"911",color:"white"};

对象属性

(JavaScript对象中的)名称:值对被称为属性。

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
属性属性值
firstNameBill
lastNameGates
age62
eyeColorblue

对象方法

对象也可以有方法,方法是在对象上执行的动作,方法以函数定义被存储在属性中;

例如:

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};
属性属性值
firstNameBill
lastNameGates
age62
eyeColorblue
fullNamefunction() {return this.firstName + " " + this.lastName;}

总之,方法就是作为属性来存储的函数。

this关键字

this是什么?

JavaScript this 关键词指的是它所属的对象。

它拥有不同的值,具体取决于它的使用位置:

  • 在方法中,this 指的是所有者对象。
  • 单独的情况下,this 指的是全局对象。
  • 在函数中,this 指的是全局对象。
  • 在函数中,严格模式下,this 是 undefined。
  • 在事件中,this 指的是接收事件的元素。

call()apply() 这样的方法可以将 this 引用到任何对象。

方法中的this

在对象方法中,this 指的是此方法的“拥有者”。

例如:

在方法fullname中,this指的是person对象;

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};
单独的this

在单独使用时,拥有者是全局对象,因此this指的是全局对象。

在浏览器窗口中,全局对象是[object window]:

var x = this;

在严格模式中,如果单独使用,那么 this 指的是全局对象 [ object Window]:

"use strict";
var x = this;
函数里的this
默认

在JavaScript函数中,函数的拥有者默认绑定 this ;

因此,在函数中,this 指的是全局对象 [ object Window ];

function myFunction() {
  return this;
}
严格模式

JavaScript严格模式不允许默认绑定;

因此,在函数中使用时,在严格模式下,this是未定义的(undefined);

"use strict";
function myFunction() {
  return this;
}
事件处理程序中的this

在HTML事件处理程序中, this 指的是接受此事件的HTML 元素:

<button onclick="this.style.display='none'">
  点击来删除我!
</button>
对象方法绑定
var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

总之,this.firstName 意味着this(person)对象的 firstName 属性

显式函数绑定

call()apply() 方法是预定义的 JavaScript 方法。

它们都可以用于将另一个对象作为参数调用对象方法。

在下面的例子中,当使用 person2 作为参数调用 person1.fullName 时,this 将引用 person2,即使它是 person1 的方法:

var person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
var person2 = {
  firstName:"Bill",
  lastName: "Gates",
}
person1.fullName.call(person2);  // 会返回 "Bill Gates"

对象定义

我们定义(创建)了一个JavaScript对象:

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};

空格和折行都是允许的。对象定义可横跨多行:

var person = {
    firstName:"Bill",
    lastName:"Gates",
    age:50,
    eyeColor:"blue"
};

访问对象属性

有两种方法访问属性:

objectName.propertyName

或者

objectName["propertyName"]

访问对象方法

可以通过如下语法访问对象方法:

objectName.methodName()

注:如果您不使用 () 访问 fullName 方法,则将返回函数定义;

避免声明字符串,数值,布尔值

如果通过关键词 “new” 来声明 JavaScript 变量,则该变量会被创建为对象:

var x = new String();        // 把 x 声明为 String 对象
var y = new Number();        // 把 y 声明为 Number 对象
var z = new Boolean();       //	把 z 声明为 Boolean 对象

请避免字符串、数值或逻辑对象。他们会增加代码的复杂性并降低执行速度。

8.事件

HTML事件可以是浏览器或用户做的某些事情;

下面是HTML的一些例子:

  • HTML网页完成加载
  • HTML输入字段被修改
  • HTML按钮被点击

通常,当事件发生时,用户会被希望做某些事;

JavaScript允许你在事件被侦测时执行代码:

通过JavaScript代码,HTML允许你向HTML元素添加事件处理程序;

使用单引号:

<element event='一些 JavaScript'>

或使用双引号:

<element event="一些 JavaScript">

例如:

<button onclick='document.getElementById("demo").innerHTML=Date()'>现在的时间是?</button>

该例改变了id=“demo” 的元素的内容:

点击前:

在这里插入图片描述

点击后:

在这里插入图片描述

<button onclick="this.innerHTML=Date()">现在的时间是?</button>

该例改变了自身元素的内容:

点击前:

在这里插入图片描述

点击后:

在这里插入图片描述

常见的 HTML 事件

下面是一些常见的 HTML 事件:

事件描述
onchangeHTML 元素已被改变
onclick用户点击了 HTML 元素
onmouseover用户把鼠标移动到 HTML 元素上
onmouseout用户把鼠标移开 HTML 元素
onkeydown用户按下键盘按键
onload浏览器已经完成页面加载

JavaScript 能够做什么?

事件处理程序可用于处理、验证用户输入、用户动作和浏览器动作:

  • 每当页面加载时应该做的事情
  • 当页面被关闭时应该做的事情
  • 当用户点击按钮时应该被执行的动作
  • 当用户输入数据时应该被验证的内容
  • 等等

让 JavaScript 处理事件的不同方法有很多:

  • HTML 事件属性可执行 JavaScript 代码
  • HTML 事件属性能够调用 JavaScript 函数
  • 您能够向 HTML 元素分配自己的事件处理函数
  • 您能够阻止事件被发送或被处理
  • 等等
    ----- |
    | onchange | HTML 元素已被改变 |
    | onclick | 用户点击了 HTML 元素 |
    | onmouseover | 用户把鼠标移动到 HTML 元素上 |
    | onmouseout | 用户把鼠标移开 HTML 元素 |
    | onkeydown | 用户按下键盘按键 |
    | onload | 浏览器已经完成页面加载 |

JavaScript 能够做什么?

事件处理程序可用于处理、验证用户输入、用户动作和浏览器动作:

  • 每当页面加载时应该做的事情
  • 当页面被关闭时应该做的事情
  • 当用户点击按钮时应该被执行的动作
  • 当用户输入数据时应该被验证的内容
  • 等等

让 JavaScript 处理事件的不同方法有很多:

  • HTML 事件属性可执行 JavaScript 代码
  • HTML 事件属性能够调用 JavaScript 函数
  • 您能够向 HTML 元素分配自己的事件处理函数
  • 您能够阻止事件被发送或被处理
  • 等等
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值