Javascript基础入门教程

Javascript基础入门教程
万人迷这篇文章主要介绍了javascript基础入门教程,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。
1、JavaScript简介
一门客户端脚本语言,运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎,不需要编译,直接就可以被浏览器解析执行了python for语句用法。
1.2、JavaScript的发展史
起源问题:上世纪末1995年时,Netscape(网景)公司推出Navigator浏览器。发布后用的人不多,这咋整啊?这家公司就想了一个好方案,不仅在浏览器实现静态HTML,还想要有动态效果,比如:在前端处理表单验证。
发明诞生:有目标就去做,网景公司大牛多,Brendan Eich(布兰登·艾奇)据说就用了10天就把JavaScript搞了出来,刚出来时叫LiveScript,为了蹭蹭当红明星Java热度,就改成JavaScript了(瞬间就火了),事实上他们两没啥关系。
竞争对手:看到网景公司有了js,微软感觉不行啊,我的IE要被干掉啊,同时也感到js的前途无量,于是参考JavaScript弄了个名为JScript浏览器脚本语言。
标准制定: Netscape和微软竞争出现的js导致版本的不一致,随着业界的担心,JavaScript的标准化被提上议事日程。ECMA(欧洲计算机制造商协会)组织就去干这事,最后在1997年弄出了ECMAScript作为标准。这里ECMA和JavaScript可以看做表达的同一个东西。
1.3、JavaScript的功能
可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。
1.4、JavaScript的特点
1、js源码不需要编译,浏览器可以直接解释运行。
2、js是弱类型语言,js变量声明不需要指明类型。
1.5、JavaScript组成
组成部分 | 作用 |
---|---|
ECMA Script | 构成了JS核心的语法基础 |
BOM | Browser Object Model 浏览器对象模型,用来操作浏览器上的对象 |
DOM | Document Object Model 文档对象模型,用来操作网页中的元素(标签) |
2、JavaScript基础语法
2.1、HTML引入JS
2.1.1、内部引入
定义标签,标签体内容就是js代码
<> |
<>标签可以写在任意位置,推荐写在
的尾部。浏览器在执行时,是从下往下依次执行!2.1.2、外部引入
< src="js/文件名.js"></> |
1、标签不能自闭合。
2、如果标签使用src属性,那么浏览器将不会解析此标签体的js代码。
2.2、JS输出数据的三种方式
2.2.1、浏览器弹窗
<> |
2.2.2、输出HTML页面
<> |
2.2.3、输出浏览器控制台
<> |
2.3、JS注释
2.3.1、单行注释
//注释内容 |
2.3.2、多行注释
/*注释内容*/ |
2.4、JS变量声明
java是强类型语言,注重变量的定义,所以在定义变量时都需要指定数据类型。
js是弱类型语言,不注重变量的定义,所以在定义变量时不需要指定数据类型。
2.4.1、定义变量
//局部变量 用let定义 |
2.4.2、定义常量
//常量定义 const |
<> |
注意事项:
1、ECMAScript6之前定义变量使用var 但是会有很多坑,所以ECMAScript6之后开始推出let声明变量,const声明常量。
2、在js中,末赋值的变量,也是可以使用的,但是这个值是undefined,末定义的变量。
2.5、JS的数据类型
属性 | 描述 |
---|---|
number | 数字类型,不区分小数整数 |
string | 字符串类型,不区分单双串 |
boolean | 布尔类型,true/false |
object | 对象(function null) |
undefined | 未定义 |
2.5.1、类型判断 typeof变量
<> |
2.6、JS的运算符
运算符 说明
算数运算符 +、 - 、*、 / 、% 、 ++ 、 –
赋值运算符 = 、+= 、-= 、 *= 、 /= 、 %=
比较运算符 > 、 >= 、 < 、 <= 、 == 、 ===(全等于,仅js) 、 !=
逻辑运算符 && 、 || 、 !
三元运算符 关系表达式 ? 值1 : 值2;
2.6.1、算数运算符
在js中数值可与字符串进行数学运算,底层实现隐式转换。
< type="text/java"> |
var a = 3; |
注意:字符串类型与数字类型的运算中,只有相加会进行字符串拼接,而减、乘、除运算中,字符串中的数值可与字符串进行数学运算。
2.6.2、比较运算符
==、===(全等于)之间的区别?
== : 只比较内容是否相同 根本不比较数据类型
===:全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false
< type="text/java"> |
2.6.3、三目(元)运算符
格式: 表达式 ? 结果1 : 结果2 ;
如果表达式运算的结果是true,把结果1返回
如果表达式运算的结果是false,把结果2返回
//定义一个变量为3 |
2.7、JS流程控制语句
2.7.1、if结构
< type="text/java"> |
JS的条件语句和Java语法基本一样,但是对数据类型的真假判断有些区别。
JS中对各种数据类型作为布尔值有以下特点:
类型 | 用法 |
---|---|
boolean | true为真、false为假 |
number | 非0为true |
string | 除了空字符串(“”),其他都是true |
null&undefined | 都是false |
对象 | 所有对象都是true |
无意义的数据都为false 反之都为true。
< type="text/java"> |
2.7.2、switch语句
< type="text/java"> |
在java中,switch语句可以接受的数据类型: byte int shor char,枚举(1.5) ,String(1.7)。
在JS中,switch语句可以接受任意的原始数据类型。
2.8 、循环结构
2.8.1、for循环
普通for循环
for(let 初始化语句; 条件表达式; 条件控制语句){ |
增强for循环
for(let 变量名 of 对象){ |
索引for循环
for(let 变量 in 对象){ |
代码演示
< type="text/java"> |
forof 与 forin之间的区别
- forin可以遍历对象,forof不能遍历对象
- forin遍历出数组中的索引,forof遍历出数组中的元素
2.8.2、while循环
for一般用在某一个范围中循环
while一般用在一个确定范围中循环
for中的 var i = 1;这个只能在for循环中使用
while中的 var i = 1; 可以全局中使用
<> |
2.8.3、do…while循环
do…while循环就不再单独演示,跟java中的do…while循环用法是一致的!
<> |
总结
普通for 与 java一样
forin:遍历出数组的索引
遍历出对象中的属性名key
forof: 遍历数组中的元素
2.9、 JS函数
js函数是执行特定功能的代码块,也可以称为js方法。与java中的方法的功能是一样的。
function 函数名(参数列表){ |
2.9.1、函数的第一种定义方式
function demo(){ |
2.9.2、函数的第二种定义方式
<>
/*
比较复杂,只需要了解,开发很少使用
*/
var demo = new Function(“a,b”, “alert(a+b)”);
demo(4,4);
</>
2.9.3、函数的第三种定义方式
<> |
2.9.4、绑定一个函数
|
2.9.5、获取标签中的内容
<> |
2.9.6、函数总结
注意事项
方法定义时,形参的类型不用写,返回值类型可写可不写
如果定义名称相同的方法,会被覆盖,js中没有方法的重载的概念
在JS中,方法的调用只与方法的名称有关,和参数列表无关
在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数
JS函数中也可以有匿名函数
匿名函数经常会跟事件进行结合着使用
function(参数列表){ |
2.10、正则表达式
RegExp对象,正则对象,正则表达式的书写规则和Java也一致:
. 当前可以是任意字符
? 表示零次或一次
- 表示零次或多次
- 表示一次或多次
() 对某个存在的正则进行分组 组的使用 \组号 $组号
{} 当前的规则可以出现的次数
{2} 正好 2次 {m,} 最少m次 {m,n} 最少m次 最多n
[] 当前位置上可以是中括号中某个字符
[abc] [^abc] [a-zA-Z][0-9]
\d 当前位置上可以数字
\w 当前位置上可以是字母 数字 下划线
\b 单词边界 hello world
^ 行开始
$ 行结尾
3、JS的常用内置对象
3.1、String对象
3.1.1、创建对象
有三种方式: 单引号(‘’) 、双引号(“”) 、反引号(``)
< type="text/java"> |
3.1.2、常用方法
方法 | 说明 |
---|---|
substring() | 提取字符串中两个指定的索引号之间的字符,和java一样,包左不包右 |
toLowerCase() | 把字符串转换为小写 |
toUpperCase() | 把字符串转换为大写。 |
replace() | 替换与正则表达式匹配的子串。 |
charAt() | 返回在指定位置的字符 |
trim() | 移除字符串首尾空白 |
split(delimiter) | 把字符串分割为子字符串数组;分割为数组 |
<> |
3.2、Array对象
3.2.1、创建数组
let 数组名 = [元素1,元素2,元素3…..];
格式一
<> |
格式二
let 数组名 = new Array(元素1,元素2,元素3…..);
<> |
3.2.2、常用方法
方法 说明
concat() 连接两个或更多的数组,并返回结果
push() 向数组的末尾添加一个或更多元素,并返回新的长度
join(参数) 将数组中的元素按照指定的分隔符拼接为字符串
< type="text/java"> |
3.2.3、数组特点
1、JS中,数组元素的类型可变的。
2、JS中,数组长度可变的。
3.3、Math对象
3.3.1、创建对象
Math对象不用创建,直接使用。 Math.方法名();
方法 说明
round(x) 把数四舍五入为最接近的整数。
floor(x) 向下取整
ceil(x) 向上取整
random() 随机数,返回 0 ~ 1 之间的随机数。 含0不含1
<> |
属性 说明
PI 圆周率
3.4、Date对象
3.4.1、创建对象
var date = new Date();
3.4.2、常用方法
方法 说明
toLocaleString() 返回当前date对象对应的时间本地字符串格式
getTime() 获取毫秒值。返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差
getFullYear() 获取年
getMonth() 获取月
getHours() 获取时
getMinutes() 获取分
getDate() 获取日
getSeconds() 获取秒
<> |
3.5、全局函数
3.5.1、什么是全局函数
全局函数不需要对象就可以直接调用: 方法名();
3.5.2、常用全局函数
方法 说明
parseInt() 将字符串解析成一个整数。
parseFloat() 将字符串解析成一个浮点数。
isNaN() 判断是否是一个NaN类型的数据
<> |
如果要判断是否是一个NaN类型的数据,使用isNaN()
3.5.3、字符编码
方法 说明
encodeURI() 把字符串编码为 URI
decodeURI() 解码某个编码的 URI
<> |
3.5.4、普通字符串解析js代码
方法 说明
eval() 接受一个js字符串,校验字符串中的内容是不是js代码(脚本),如果是js代码就执行,如果不是就不执行
3.5.5、URL和URI
如下面网址:
https://www.baidu.com/a/fdks/kdjs
http:// 网络传输协议
www 万维网
.baidu.com 域名
/a/fdks/kdjs 资源路径(资源:一个文件,一个程序,图片,视频,,,)
URL: 统一资源定位符 百度一下,你就知道
URI:统一资源标识符 /a/fdks/kdjs