JavaScript(一)

JS简介

  • HTML定义了网页的内容,CSS描述了网页的布局,JavaScript控制了网页的行为。
  • 属于网络脚本语言。
  • 用于设计,验证表单,检测浏览器,创建cookies
  • 可插入html页面的编程代码
  • JavaScript:写入HTML输出
document.write("<h1>This is a heading</h1>");
  • JavaScript:对事件作出反应
<button type="button" onclick="alert("Welcome!")">点我!</button>
  • alert()函数不常用,但代码测试方便
  • JavaScript:改变HTML内容
x=document.getElementById("demo")  //查找元素,这个方法是HTML DOM中定义的,Document Object Model
x.innerHTML="Hello JavaScript";    //改变内容
  • JavaScript:改变 HTML 图像
<!DOCTYPE html>
<html>
<body>
<script>
function changeImage()
{
element=document.getElementById('myimage')
if (element.src.match("bulbon")) #检索src中有没有bulbon
  {
  element.src="../i/eg_bulboff.gif";
  }
else
  {
  element.src="../i/eg_bulbon.gif";
  }
}
</script>

<img id="myimage" onclick="changeImage()" src="../i/eg_bulboff.gif">

<p>点击灯泡来点亮或熄灭这盏灯</p>

</body>

</html>

  • JavaScript:改变 HTML 样式
x=document.getElementById("demo")  //找到元素
x.style.color="#ff0000";  # 改变样式
  • JavaScript:验证输入
if isNaN(x) {alert("Not Numeric")};

JS实现

  • HTML中脚本必须位于 <script> 与 </script> 标签之间。脚本可被放置在 HTML 页面的<body> 和<head> 部分中。JS会在页面加载时执行
  • 外部JavaScript,外部文件是.js。外部脚本不能包含<script>标签
<!DOCTYPE html>
<html>
<body>
<script src="myScript.js"></script>
</body>
</html>

JavaScript输出

  • JS没有打印或输出函数。通过以下方法显示数据:
    • window.alert() 弹出警告框
    • document.write() 将内容写入HTML文档中
    • innerHTML 写入到HTML元素
    • console.log() 写入到浏览器控制台
  • 操作HTML元素
<script>
document.getElementById("demo").innerHTML="我的第一段 JavaScript";
</script>

  • JavaScript 由 web 浏览器来执行。在这种情况下,浏览器将访问 id=“demo” 的 HTML 元素,并把它的内容(innerHTML)替换为 “My First JavaScript”。
  • 写到文档输出
<script>
document.write("<p>我的第一段 JavaScript</p>");
</script>

JS语句

  • 分号:分号用于分隔 JavaScript 语句。
  • 顺序执行
  • JavaScript 代码块:JavaScript 语句通过代码块的形式进行组合。块由左花括号开始,由右花括号结束。
  • 大小写敏感
  • 忽略空格
  • 可以在文本字符串中使用反斜杠对代码行进行换行
  • JavaScript 是脚本语言。浏览器会在读取代码时,逐行地执行脚本代码。

注释

  • //注释
  • /* 多行注释*/

变量

  • 变量必须以字母开头
  • 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
  • 变量名称对大小写敏感(y 和 Y 是不同的变量)
  • var 声明变量
  • 弱类型语言,变量数据类型根据值决定。
  • 一条语句,多个变量。
var name="Gates", age=56, job="CEO";
var x, y, z = 1;  不可以

let 声明的变量只在其声明的块或子句中可用。
function varTest(){
	var x=1;
	if (Treu) {
		var x=2;
		console.log(x); // 2
	}
	console.log(x); // 2
}

function varLet(){
	let x=1;
	if (True) {
		let x=2;
		console.log(x); // 2
	}
	console.log(x); //1
}

const a=1; //常量,不能重新声明,不能重新赋值	

JavaScript数据类型

  • 字符串,数字,布尔,数组,对象,Null,Undefined
  • 只有一种数字数据类型。前缀为"0"为八进制,为"0x"为十六进制
  • var x1=34.00,x2=34,y=123e5,z=123e-5
  • 数组:var cars=new Array(); cars[0]=“Audi”;
  • 或者:var cars=new Array(“Audi”,“BMW”,“Volvo”);
  • 或者:var cars=[“Audi”,“BMW”,“Volvo”];
  • 对象由花括号分隔,在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔
  • typeof false // 返回boolean
var person={firstname:"Bill", lastname:"Gates", id:5566};
  • 对象属性有两种寻址方式:
    • name=person.lastname;
    • name=person[“lastname”];
  • Undefined 这个值表示变量不含有值。
  • 可以通过将变量的值设置为 null 来清空变量。cars=null;
  • 当您声明新变量时,可以使用关键词 “new” 来声明其类型:
var carname=new String;
var x=      new Number;
var y=      new Boolean;
var cars=   new Array;
var person= new Object;
  • JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。
// 对象创建
function Demo(){
	var obj=new Object():
	obj.name="盖聂";
	obj.age=12;
	obj.firstF=function(){}
	obj.secondF=function(){}
	return obj;
}
var one=Demo();
document.write(one.age);

// 第二种
function Demo(){
	this.name="卫庄";
	this.age=12;
	this.firstF=function(){}
	this.secondF=function(){}
}
var one=new Demo
document.write(one.age);
  • 基本类型的变量时存放在栈内存中的。
var a,b
a="cnjc";  //a:cnjc
b=a;  // b:cnjc
a="呵呵"; //a:呵呵,b:cnjc

在这里插入图片描述

  • 引用类型的值是保存在堆内存中的。
var a = {name:"percy"};
var b;
b = a;
a.name = "zyj";
console.log(b.name);    // zyj
b.age = 22;
console.log(a.age);     // 22
var c = {
  name: "zyj",
  age: 22
};

在这里插入图片描述

JavaScript对象

  • JavaScript中所有事物都是对象:字符串、数字、数组、日期,等等。
  • 对象拥有属性和方法。
    • 属性是与对象相关的值。
    • 方法是能够在对象上执行的动作。
  • 在 JavaScript 中,对象是数据(变量),拥有属性和方法。字符串对象同时拥有若干个内建的方法。
var txt="Hello";
txt.length=5
txt.indexOf()
txt.replace()
txt.search()
  • 创建JavaScript对象
person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";

person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

javascript是键值对的容器

  • 使用对象构造器来构造对象
function person(firstname,lastname,age,eyecolor){
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;

this.changeName=changeName;
function changeName(name){
this.lastname=name;
}
}

var myFather=new person("Bill","Gates",56,"blue")
  • 访问对象属性的语法是:objectName.propertyName
  • 访问对象的方法:objectName.methodName()
var message="Hello world!";
var x=message.toUpperCase();
  • JavaScript类

JavaScript是面向对象的语言,但JavaScript不使用类。JavaScript基于prototype,而不是基于类的。

  • JavaScript for…in语句循环遍历对象的属性。
var person={fname:"Bill",lname:"Gates",age:56};
for (x in person)
  {
  txt=txt + person[x];
  }

JavaScript 函数

  • 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
  • 函数就是包裹在花括号中的代码块,前面使用了关键词 function
function functionname()
{
这里是要执行的代码
}
  • 当调用该函数时,会执行函数内的代码。
    可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。
  • 调用带参数的函数
myFunction(argument1,argument2)

function myFunction(var1,var2)
{
这里是要执行的代码
}
# 变量和参数必须以一致的顺序出现。

实参个数如果比形参少,那么剩下的默认赋值为undefined,如果实参传的比形参数量多,那么是全部都会被传进去的,只不过没有对应的形参可以引用(但可以用arguments来获取剩下的参数)。
函数名和变量名重名,函数声明会首先执行,之后变量声明。所以变量声明会覆盖函数声明。

function myFunction(x, y) {
    y = y || 0;
}
  • 带有返回值的函数
function myFunction()
{
var x=5;
return x;
}

var myVar=myFunction();
document.getElementById("demo").innerHTML=myFunction();

function myFunction(a,b)
{
if (a>b)
  {
  return;
  }
x=a+b
}
  • 函数表达式、匿名函数
var x = function (a, b) {return a * b};
var z = x(4, 3);
  • 构造函数

var myFunction = new Function("a", "b", "return a * b");

var x = myFunction(4, 3);
  • 自调用函数
(function () {
    var x = "Hello!!";      // 我将调用自己
})();
  • 函数作为值使用
function myFunction(a, b) {
    return a * b;
}

var x = myFunction(4, 3) * 2;
  • 函数是对象
function myFunction(a, b) {
    return arguments.length;  //返回函数参数个数  arguments 对象包含了函数调用的参数数组。
}

function myFunction(a, b) {
    return a * b;
}

var txt = myFunction.toString();  // function myFunction(a, b) { return a * b; }
  • 箭头函数
// ES5
var x = function(x, y) {
     return x * y;
}
 
// ES6
const x = (x, y) => x * y;
const x = (x, y) => { return x * y };
  • 使用构造函数调用函数

构造函数的调用会创建一个新的对象。新对象会继承构造函数的属性和方法。

// 构造函数:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}
 
// This    creates a new object
var x = new myFunction("John","Doe");
x.firstName;        
  • 函数方法调用函数

function myFunction(a, b) {
    return a * b;
}
myObject = myFunction.call(myObject, 10, 2);     // 返回 20

function myFunction(a, b) {
    return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray);  // 返回 20

  • 闭包
var add = (function () {
    var counter = 0;
    return function () {return counter += 1;}
})();
 
add();
add();
add();
 
// 计数器为 3
  • 局部 JavaScript 变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。

  • 全局 JavaScript 变量

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

  • JavaScript 变量的生存期

JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。

  • 向未声明的 JavaScript 变量来分配值

如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。

JavaScript事件

  • HTML事件是发生在HTML元素上的事情。使用JS可以触发这些事件
  • HTML可以是浏览器行为也可以是用户行为。(页面加载完成、input字段改变、按钮被点击)
<button onclick="getElementById('demo').innerHTML=Date()">
<button onclick="this.innerHTML=Date()">现在时间是?</button>
<button onclick="displayDate()">现在的时间是?</button>
事件描述
onchangeHTML元素改变
onclick用户点击HTML
onmouseover鼠标指针移动到指定的元素上时发生
onmouseout用户从一个 HTML 元素上移开鼠标时发生
onkeydown用户按下键盘按键
onload浏览器已完成页面的加载
  • 事件用处(处理表单验证,用户输入,用户行为及浏览器动作)
    • 页面加载时触发事件
    • 页面关闭时触发事件
    • 用户点击按钮执行动作
    • 验证用户输入内容的合法性

JavaScript字符串

  • 用于存储和处理文本
  • 可以使用索引位置来访问字符串中的每个字符
var carname = "Volvo XC60"
var character = carname[7]
var answer="He is called 'Johnny'";
var x = 'It\' alright';
var carname_len = carname.length;

\n:换行				\b:退格符
\r:回车				\f:换页符
  • 字符串可以是对象
var x = "hello"
var y = new String("hello")
typeof x // 返回String
typeof y // 返回Object
(x === y) // 结果为false。===为绝对相等,类型和值都必须相等
方法描述
charAt()返回指定索引位置的字符
charCodeAt()返回指定索引位置字符的 Unicode 值
concat()连接两个或多个字符串,返回连接后的字符串
fromCharCode()将 Unicode 转换为字符串
indexOf()返回字符串中检索指定字符第一次出现的位置
lastIndexOf()返回字符串中检索指定字符最后一次出现的位置
match()找到一个或多个正则表达式的匹配
replace()替换与正则表达式匹配的子串
search()检索与正则表达式相匹配的值
slice()提取字符串的片断,并在新的字符串中返回被提取的部分
split()把字符串分割为子字符串数组
substr()从起始索引号提取字符串中指定数目的字符
substring()提取字符串中两个指定的索引号之间的字符
toLowerCase()把字符串转换为小写
toString()返回字符串对象值
toUpperCase()把字符串转换为大写

JavaScript运算符

  • JavaScript 算术运算符
    算术运算符用于执行变量与/或值之间的算术运算。
    给定 y=5,下面的表格解释了这些算术运算符:
运算符描述例子结果
+x=y+2x=7
-x=y-2x=3
*x=y*2x=10
/x=y/2x=2.5
%求余数(保留整数)x=y%2x=1
++累加x=++yx=6
--累减x=--yx=4
  • JavaScript赋值运算符
    赋值运算符用于给 JavaScript 变量赋值。
    给定 x=10 和 y=5,下面的表格解释了赋值运算符:
运算符例子 等价于 结果
= x=y x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
*= x*=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0
  • 用于字符串的+运算符
    如果是把数字与字符串相加 ,结果将成为字符串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值