JavaScript(一)概述、引入方法、数据类型详解、字符串、数组(遍历)、对象、流程控制(if判断、while循环、for循环、forEach循环、for...in)、Map和Set(遍历)

一、什么是 JavaScript?

1.1、概述

JavaScript是一门世界上最流行的脚本语言,是Brendan Eich花了10天时间就被创造出来了,与Java没啥关系,这名字就是为了蹭热度。
一个合格的后端人员,必须要精通 JavaScript
运行环境是:浏览器
解释性的语言

每次刷新页面,js代码都会执行,从上到下,依次执行
所以处理dom树操作的时候,要把js代码放在后面

当直接通过url来直接访问js代码时,会输出纯文本的内容,因为唯有script标签
在这里插入图片描述

1.2、历史

ECMAScript它可以理解为是JavaScript的一个标准
最新版本已经到es6版本~但是大部分浏览器还只停留在支持 es5 代码上!
开发环境—线上环境,版本不一致

二、快速入门(大致了解一下)

js可以与html代码混编,可以出现在任何位置

2.1、引入JavaScript的两种方法

JavaScript也是要与html代码连接起来的,下来我们就说一下这个连接方法!

方法一:内部标签
将js代码与html代码写一块

test.html

<script>
    //js代码
</script>

方法二:外部引入
将js代码与html代码分开来写
例如js代码名为
abc.js

//js代码

test.html

<script src="abc.js"></script>

完整代码演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
	<!--
	内部引用:
	script标签内,写Javascript代码
    <script>
        alert('hello,world');
    </script>
    -->
	
	<!--外部引入-->
    <!--注意:script标签必须成对出现-->
    <script src="js/abc.js"></script>

	<!--不用显示定义type,也默认就是 javascript,就不用管了,删掉就行-->
	<!--
        <script type="text/javascript"></script>
    	-->
</head>
<body>

<!--这里也可以存放-->
</body>
</html>
2.2、基本语法入门

大家可能注意到了上面代码中的alert('hello,world');
这是什么意思呢?他其实就是一个网页上的弹窗,大家都不陌生吧。

<!--JavaScript严格区分大小写!-->
<script>
    // 1. 定义变量    变量类型  变量名  = 变量值;
      var 王者荣耀="倔强青铜";
        // 2. 条件控制
    alert(王者荣耀);
	
	if (王者荣耀==="倔强青铜"){
    	alert("我很强!");
	}
	console.log("找到我了吗?");

//console.log(score) 在浏览器的控制台打印变量! 相当于System.out.println();
    /*
        * asdasdasd
        * */
</script>

大家第一次接触可能看不懂,不过没关系接下来都会说的。
前面说了,他是花了10天就被创造出来的语言,所以他很随意,随意到什么程度呢?
他的所有变量的数据类型都用var来表示,学过Java的小伙伴学这个就会很轻松了~

中英文符号一定不要搞混了呀!!!
运行结果:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当然,大家也可以直接在控制台上输入代码!

还可以通过http的方式引入js代码:比如百度
在这里插入图片描述

2.3、数据类型

数值,文本,图形,音频,视频……
变量

var 王者荣耀 = "倔强青铜";//用var来声明变量,未声明会报undefined未定义
王者荣耀 = "荣耀王者";//重新赋值

数字
js不区分小数和整数,Number

123 //整数123
123.1 // 浮点数123.1
1.123e3 //科学计数法
-99    //负数
NaN    // not  a  number
Infinity //表示无限大

字符串

’abc‘  
“abc”
//双引,单引都可以

布尔值

truefalse

逻辑运算

&&   两个都为真,结果为真
||   一个为真,结果为真
!    真即假,假即真

比较运算符!重要!
一定不要搞混了呀!这是一个JS的缺陷,坚持不要使用 == 比较

=
==  等于(类型不一样,值一样,也会判断为true===   绝对等于(类型一样,值一样,结果true)

注意:NaN===NaN ,这个与所有的数值都不相等,包括自己
只能通过 isNaN(NaN) 来判断这个数是否是 NaN

浮点数问题:

console.log((1/3) === (1-2/3))   //为false

尽量避免使用浮点数进行运算,存在精度问题!

Math.abs(1/3-(1-2/3))<0.00000001

null 和 undefined

null  //空,什么都没有
undefined //未定义

数组
Java的数值必须是相同类型的对象~,JS中不需要这样!var可以代表所有数据类型嘛!

//保证代码的可读性,尽量使用 []
var arr1 = [1,2,3,4,5,'hello',null,true];//一般这样写

var arr2 =new Array(1,12,3,4,4,5,'hello');

//取数组下标:如果越界了,就会  undefined

对象
对象是大括号,数组是中括号~~

每个属性之间使用逗号隔开,最后一个不需要添加

//Person person =  new Person(1,2,3,4,5);
var person = {
    name: "亚瑟",
    age: 28,
    tags: ['圣光守护','誓约之盾','回旋打击','圣剑裁决']
}

取对象的值
在这里插入图片描述
这个值就是这样取的,是不是很简单呢。

2.4、严格检查格式

在IEDA里面要把es版本调到es6
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
	<!--
    前提:IEDA 需要设置支持ES6语法
    'use strict'; 严格检查模式,预防JavaScript的随意性导致产生的一些问题
    必须写在JavaScript的第一行!
    局部变量建议都使用 let 去定义~
    -->
    <script>
        'use strict';
        // 全局变量
        let i = 1;
        // ES6   let
    </script>
</head>
<body>

</body>
</html>

在es6 使用var它底下会画个灰色波浪线,就是不建议使用
在这里插入图片描述
至于什么时候使用let或const,下篇讲~

三、数据类型(深入了解)

3.1、字符串

1、 正常字符串我们使用 单引号,或者双引号包裹

2、注意转义字符 \

\' 
\n
\t
\u4e2d  \u#### Unicode字符
\x41          Ascll字符

这些都比较通用,就不解释了,应该能看懂吧~

3、多行字符串编写

//tab 上面 esc键下面
var msg = 
    `hello
 world
 你好ya
 你好`

4、模板字符串
就是还可以这样来玩!

//tab 上面 esc键下面
let name = "hhh";
let age = 3;

let msg = `你好呀,${name}`

5、字符串长度

str.length

6、字符串的可变性,不可变
在这里插入图片描述
就是上面我们想把student字符串第一位改为1,实际上是没有改成功的,他是不可变的!

7、大小写转换

//注意,这里是方法,不是属性了
student.toUpperCase()
student.toLowerCase()

8、查索引

student.indexOf('t')

9、substring

[)//意思是含头不含尾  很耳熟吧~  注意:里面数字代表索引
student.substring(1) // 从1索引处截取到最后一个字符串
student.substring(1,3) //[1,3)

在这里插入图片描述
大家下去可以多练习,只有自己尝试过了,才能更好的记住!

3.2、数组

Array可以包含任意的数据类型

var arr = [1,2,3,4,5,6] ; //通过下标取值和赋值
arr[0]
arr[0] = 1

1、长度

arr.length

注意:加入给 arr.length 赋值,数组大小就会发生变化~,如果赋值过小,元素就会丢失

2、indexOf,通过元素获得下标索引

arr.indexOf(2)
>1

字符串的 “1” 和数字 1 是不同的

3、slice() 截取Array的一部分,返回一个新数组,类似于String中的 substring

4、push(),pop() 尾部

push: 压入到尾部
pop: 弹出尾部的一个元素

5、unshift() , shift() 头部

unshift: 压入到头部
shift: 弹出头部的一个元素

6、排序 sort()

(3) ["B", "C", "A"]
arr.sort()
(3) ["A", "B", "C"]

7、元素反转 reverse()

(3) ["A", "B", "C"]
arr.reverse()
(3) ["C", "B", "A"]

8、concat()

(3) ["C", "B", "A"]
arr.concat([1,2,3])
(6) ["C", "B", "A", 1, 2, 3]
arr
(3) ["C", "B", "A"]

注意: concat()并没有修改数组,只是会返回一个新的数组

9、连接符 join
打印拼接数组,使用特定的字符串连接

(3) ["C", "B", "A"]
arr.join('-')
"C-B-A"

10、多维数组

arr = [[1,2],[3,4],["5","6"]];
arr[1][1]
>4

数组:存储数据 (如何存,如和取,方法都可以自己实现!)

3.3、对象

若干个键值对

var 对象名 = {
 属性名: 属性值,
    属性名: 属性值,
    属性名: 属性值
}

//定义了一个person对象,它有四个属性!
var person = {
    name: "kuangshen",
    age: 3,
    email: "24736743@qq.com",
    score: 0
}

Js中对象, {……} 表示一个对象, 键值对描述属性 xxxx:xxxx,多个属性之间使用逗号隔开,最后一个属性不加逗号!
JavaScript中的所有的键都是字符串,值是任意对象!

1、 对象赋值

person.name = "亚瑟"
"亚瑟"
person.name
>"亚瑟"

2、使用一个不存在的对象属性,不会报错! undefined

person.haha
undefined

3、动态的删减属性,通过 delete 删除对象的属性

delete person.name
true
person

4、动态的添加,直接给新的属性添加值即可

person.haha = "haha"
"haha"
person

5、判断属性值是否在这个对象中! xxx in xxx!

'age' in person
true
//继承
'toString' in person
true

6、 判断一个属性是否是这个对象自身拥有的 hasOwnProperty()

person.hasOwnProperty('toString')
false
person.hasOwnProperty('age')
true
3.4、流程控制

if 判断

var age = 3;
if (age>3){ //第一个判断
    alert("haha");
}else if(age<5) {  //第二个判断
   alert("hehe");
}else { //否则,,
    alert("heihei");
}

while循环,避免程序死循环

while(age<100){
    age = age + 1;
    console.log(age)
}

do{
    age = age + 1;
    console.log(age)
}while(age<100)

for循环

for (let i = 0; i < 100 ; i++) {
    console.log(i)
}

forEach 循环

5.1 引入

var age = [12,3,12,3,12,3,12,31,23,123];
//函数
age.forEach(function (value) {
    console.log(value)
})

for…in

//for(var index in object){}
for(var num in age){
    if (age.hasOwnProperty(num)){//过滤掉对象继承的属性
        console.log("存在")
        console.log(age[num])
    }
}
3.5、Map 和 Set

ES6 的新特性~

Map

//ES6  Map
//学生的成绩,学生的名字
// var names = ["tom","jack","haha"];
// var scores = [100,90,80];

var map = new Map([['tom',100],['jack',90],['haha',80]]);
var name = map.get('tom'); //通过key获得value!
map.set('admin',123456);  //新增或修改!
map.delete("tom"); //删除!

Set:无序不重复的集合

set.add(2); //添加!
set.delete(1);  //删除!
console.log(set.has(3));  //是否包含某个元素!
3.6、iterator

es6 新特性

遍历数组

//通过for of /  for  in 下标
var arr = [3,4,5]
for (var x of arr){
    console.log(x)
}

遍历map

var map = new Map([["tom",100],["jack",90],["haha",80]]);
for (let x of map){
    console.log(x)
} 

遍历set

var set = new Set([5,6,7]);
for (let x of set) {
    console.log(x)
}

学习JavaScript大多要在浏览器控制台上进行调试,大家没事可以多玩玩这个控制台,反正也玩不坏~
这次就先分享到这,下篇见~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值