赞
踩
关注公众号“轻松学编程”了解更多。
JavaScript 诞生于 1995 年。由Netscape(网景公司)的程序员Brendan Eich(布兰登)与Sun公司联手开发一门脚本语言
名字起源: Mocha->LiveScript->JavaScript
它的主要目的是,验证发往服务器端的数据、增加 Web互动、加强用户体验度等。可用于开发网站、游戏、移动端app等
javascript = ECMAScript + BOM + DOM
break | do | instanceof | typeof |
case | else | new | var |
catch | finally | return | void |
continue | for | switch | while |
debugger | function | this | with |
default | if | throw | delete |
in | try |
class | enum | extends | super |
const | export | import |
返回值:运算后得到的值
程序的三大流程控制
我们的计算机在执行一个程序的时候,最基本的方式是一条语句接一条语句的执行。但不可能所有的问题都能用顺序执行方式就能解决,总会有一些跳转。采用结构化的程序设计,可以大大提高开发程序的速度、提高程序的可读性、程序运行的速度和效率
javascript = ECMAScript + BOM + DOM
html属性
<a href="javascript:alert(100)"></a>
script标签
<script type="text/javascript">
alert('你好')
</script>
js文件
独立的js文件需要引入页面才能执行
<script type="text/javascript" src="js/common.js"><script>
script标签属性
变量定义(使用var关键字):变量是存储数据的容器
var age; //var 是关键字,age是变量名
var obj = / /; 是JavaScript中正则对象的写法
赋值:
age = 20;
定义的同时赋值:
var age=20;
可以一次定义多个变量:
var name="zhangsan", age=18, weight=108;
一系列数据的集合,每一项可以保存任何类型的数据,称为数组的元素,每个元素之间用逗号隔开
数组格式:[1,2,3]
//1)字面量(推荐)
var arr = [1,2,3];
//2)使用构造函数创建
var arr = new Array();//创建一个空数组
var arr = new Array('王大锤',18 ,'普通青年','广州');
//创建数组并同时写入数据
索引(下标):从0开始
var arr = ['html5','css3','javascript'];
//访问
arr[0]; //=> 'html5'
arr[2]; //=> 'javascript'
//写入
arr[3] = 'web前端';
length:表示数组的长度
arr.length; //=> 3
for循环
格式:for(变量初始化;判断条件;变量更新){执行语句}
var arr = ['html5','css3','javascript'];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
push: 往数组尾部添加一个或多个元素,返回数组新的长度
pop:删除数组最后一个元素,返回删除的元素
unshift:往数组开头添加一个或多个元素,返回数组新的长度
shift:删除数组第一个元素,返回删除的元素
splice(start,deleteNum,…items):在数组中插入、删除、替换的通用方法
slice(start[,end]):返回数组的片段或子数组,从start开始到end(不包括end所对应的元素)
如果省略end参数,则截取到数组的最后一项
支持负数
sort:将数组中的元素排序,并返回排序后的数组
默认以字符串的排列方式(转换成ASCII码进行对比)
reverse:将数组中的元素颠倒顺序,返回逆序后的数组
join(separator) 返回字符串值,其中包含了连接到一起的数组的所有元素
indexOf(keyword)
方法返回keyword所在数组中的索引值,如果数组不存在keyword,则返回-1
forEach(fn)
遍历方法,for循环没有太大差别,比for循环方便
map(fn)
返回一个数量相等的数组,内容是什么取决于在fn中返回的值
以上方法都对数组中的每一项运行给定函数fn,,函数中有三个形参分别为
var obj = {name:'小明',age:18}
var obj = new Object();
obj.name;//==>小明
如果读取一个不存在的属性,返回undefined
obj.sex = '男';
obj.marry = false;
obj['weight'] = 60
var obj = {name:'laoxie',age:18,gender:'man'}
//删除age属性
delete obj.age;
var obj = {
name:'laoxie',
age:18
gender:'男'
}
//遍历对象
for(var attr in obj){
//遍历过程把每次把对象属性赋值给attr
//所以获取对象属性值为:obj[attr]
document.write(obj[attr]);//分别输出:'laoxie',18,'男'
}
[{
id:'001',
name:'iphone7 plugs',
imgurl:'img/ip7.jpg',
price:5899.00,
sale:5888.00,
color:'土豪金'
},{
id:'002',
name:'Note7',
imgurl:'img/note7.jpg',
price:3899.00,
sale:998.00,
color:'黑色'
},{
id:'003',
name:'荣耀7',
imgurl:'img/honor7.jpg',
price:1999.00,
sale:1899.00,
color:'白色'
}]
_
和美元符$
组成;var n = 1 + 2
;/*注释内容*/
基本数据类型
引用数据类型
特殊数据类型
数据类型判断
typeof 'html5'; //=>string
typeof 100; //=>number
typeof true //=>boolean
typeof null //=>object
数据类型转换
基本数据类型转换:利用内置函数进行转换(主动)
var str = '10';//string
Number(str);//10,number
Boolean(str);//true
隐式转换(被动)
+, -, *, /, %:加,减,乘,除,取余(取模)
+ 的特殊用法:字符串拼接
+号两侧只要有一个是字符串则为字符串拼接
var num1=10;//表示把10赋值给num1变量
str += 'test' <==> str = str + 'test'
var n=10; n -= 2 <==> n = n - 2
&&: 逻辑与
&&比||优先级高
||:逻辑或
!: 逻辑非
!true //=> false
!false //=> true
++: 自增1(在原来的数值基础上加1)
–:自减1(在原来的数值基础上加1)
前置:
var num = 10;
++num;--num;
返回值:返回值是减1(加1)之后的值
后置:
var num = 10;
num++;num--
返回值:返回值是没减1(加1)之前的值
if单分支:
if(条件){
//条件成立(返回true)时,执行这里的代码,否则不执行
}
if双分支:
当if括号内的表达式结果成立,执行执行语句1,否则执行执行语句2
if(条件){
语句1
//条件成立(返回true)时,执行这里的代码,忽略以下代码
}else{
语句2
//条件不成立(返回false)时,执行这里的代码
}
if多分支:
从上往下,满足哪个条件就执行其相对应的语句,都不满足时,执行最后的else的语句,只能进入其中之一
if(条件1){
//条件1成立(返回true)时,执行这里的代码,忽略以下代码
}else if(条件2){
//条件2成立(返回true)时,执行这里的代码,忽略以下代码
}else{
//以上条件都不成立(都返回false)时,执行这里的代码
}
格式:条件 ? 条件成立代码 : 条件不成立代码
var a=20;
var b = 50;
var sum = a>b ? a-b : a+b;
switch(值) {
case value1: //要求value1与值恒等
//如果表达式的值恒等于value1,代码从这里开始执行
break;
case value2:
//如果表达式的值恒等于value2,代码从这里开始执行
break;
case value3:
//如果表达式的值恒等于value3,代码从这里开始执行
break;
case value4:
//如果表达式的值恒等于value4,代码从这里开始执行
break;
default:
如果以上条件都不成立,默认执行这里的代码
}
只要条件成立,就会不断地执行花括号里的语句
编写条件时,要避免出现死循环
//变量初始化
while(条件){
//条件成立就会不断地执行这里的代码,直到条件不成立
//所以这里一般会伴随着条件的更新
}
//变量初始化
do {
//不管条件是否成立,先执行一次这里的代码,再进行条件判断,
如果条件依然成立,则再次执行这里的代码,依此类推
//所以这里一般会伴随着条件的更新
} while(条件)
for(变量初始化; 条件判断; 变量更新){
//循环条件成立,则执行这里的代码
}
关键字声明(声明式):
格式:function 函数名(){}
function sum(){}
函数的声明会提前 ==> 解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);
函数表达式(赋值式)
var sum = function(){}
sum();
buton.onclick = sum;
俗称“使用范围”,即能够使用某个变量的范围,分<全局作用域>和<局部作用域>
全局变量与局部变量
变量的访问规则
就近原则(如查找变量a):
作用域链:每个函数在定义时就形成了局部作用域,如果存在多个函数嵌套,他们之间就会建立起某种联系,直到全局作用域,这种联系称之为作用域链。当函数访问变量时,根据就近原则在这个作用域链中从内到外查询变量【声明提前:提前到当前作用域最顶部】。
比如:
var name = 'liang';
function show(){
console.log(name);
var name = 'xiao';
}
由于js的声明提前,name会提前到函数show内的最顶部,
执行语句console.log(name)时会输入undefined。
```
形参和实参的数量可以不同
如果函数没有return,执行完后返回undefined
函数中的this是一个关键字,表示当前对象,而当前对象是谁,取决于谁调用了这个函数。
节点操作
* 操作属性
* 设置css样式
* 操作内容
绑定事件
生成
插入
获取节点:
获取元素的捷径
<body>
<h1 class="title">节点操作</h1>
<div id="list">
<a href="#">Google</a>
<a href="#" id="baidu">Baidu</a>
<a href="#">Yahoo</a>
</div>
<a href="#">360</a>
<script>
var baidu = document.getElementById('baidu');
//node
console.log(baidu);
var title = document.getElementsByClassName('title');
//[node]
console.log(title);
var link = document.getElementsByTagName('a');
console.log(link);
var list = document.getElementById('list');
var list_link = list.getElementsByTagName('a');
console.log(list_link);
// 生节成点
var h2 = document.createElement('h2');
h2.id = 'subTitle';
h2.innerHTML = '人工智能';
// 获取body
// var body = document.getElementsByTagName('body')[0];
//[body]
var body = document.body;
body.appendChild(h2)
</script>
</body>
window 可省略
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>02函数的执行</title>
<style>
#box{width:200px;height:100px;background-color: #f00;}
</style>
<script>
window.onload = function(){
var box = document.getElementById('box');//节点(对象)
//节点(对象)
function show(){
console.log('laoxie');
}
// 手动执行(主动)
show();
// 事件驱动执行(被动)
box.onclick = show;
box.onmouseover = function(){
console.log('over');
}
box.onmouseout = function(){
console.log('out')
}
// document.onkeyup = function(event)
{console.log(event.keyCode,event.key)
// // 事件对象:event
// console.log('upupup')
// }
// document.onkeydown = function(event){
// // 事件对象:event
// if(event.keyCode === 38){
// }
// console.log('down')
// }
// 表单改变事件onchange
username.onchange = function(){
console.log(666)
}
}
</script>
</head>
<body>
<div id="box"></div>
<input type="text" id="username">
</body>
</html>
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。