| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> JavaScript知识库 -> JavaScript(完结) -> 正文阅读 |
|
|
[JavaScript知识库]JavaScript(完结) |
|
1. 什么是JavaScript? JavaScript是一门世界上最流行的脚本语言, Java,JavaScript 10天 == 一个合格的后端人员,必须要精通JavaScript == 2、快速入门 2.1、引入JavaScript
?<script> ?//... ? ? ?</script>
? abc.js ?<script src="abc.js"> ?</script> ? ? ? ?<!DOCTYPE html>
?<html lang="en">
?<head>
? ? ?<meta charset="UTF-8">
? ? ?<title>Title</title>
?<!-- script标签内,写JavaScript代码 -->
?<!-- ? <script>-->
?<!-- ? ? ? alert("hellow,world");-->
?<!-- ? </script>-->
?<!-- 外部引入 -->
?<!-- ? 注意:script必须成对出现-->
? ? ?<script src="../JS/qj.js"></script>
??
?<!-- ? 不用显示定义类型,也默认是JavaScript -->
? ? ?<script type="text/javascript"></script>
?</head>
?<body>
?<!--这里也可以存放-->
?</body>
?</html>
2.2、基本语法入门 ?? ?<script>
? ? //1.定义变量 变量类型 变量名 = 变量值
? ? var num = 1;
? ? var name = "hbx";
? ? alert(name);
? ? //2.条件控制
? ? if (2>1){
? ? ? ? alert(true);
? ? }
?</script>
</head> <body> </body> </html> ?//console.log(name) 在浏览器的控制台打印变量 ?System.out.printf(); 2.3、数据类型 数值,文本,图形,音频,视频.... 变量 ?var 王者荣耀 = "倔强青铜" number JS不区分小数和整数 ?123//整数123 ?123.1//浮点数123.1 ?1.23e2//科学计数法 ?-99//负数 ?NaN//not a number ?Infinity//表示无限大 ?? ?? 字符串 ‘abx’ “abc” 布尔值 true false 逻辑运算 ?&& --两个都为真 结果为真 ?|| --一个为真,结果为真 ?! --真即假 假即真 比较运算符 !!!! ?= ?1 "1" ?== --等于(类型不一样,值一样,也会判断为true) ?=== --绝对等于(类型一样,值一样) ?? JS的缺陷 坚持不要使用== 须知:
浮点数问题 ?console.log((1/3) === (1-2/3)); 就尽量避免使用浮点数进行运算,存在精度问题! ? Math.abs(1/3-(1-2/3))<0.00001 null 和 undefined
数组 Java的数组必须是一系列相同数据类型的对象~,JS中不需要这样。 ?var arr={123,2,5,3,1,'holle',bull,true};
取数组下标:如果越界了,就会 ?undefined 对象 对象是大括号,数组是中括号 每个属性之间使用逗号隔开,最后一个不需要添加 //Person person = new Person(1,2,3,4,5);
var person= {
name: "hbx",
age: 3,
tags: ["js", java","web","...."]
}
取对象的值 person.name >"hanboxuan" person.age >3 2.4严格检查格式 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--
前提:IDEA需要支持ES6的语法
'use strict' 代表严格检查模式,预防JavaScript的随意性导致产生的一些问题
必须写在JavaScript第一行
局部变量建议都使用let去定义
-->
<script>
'use strict';
//全局变量
let i = 1;
//ES6 let
</script>
</head>
<body>
</body>
</html>
3、数据类型 字符串
\' 点 \n 换行 \t tab \u4e2d \u#### unicode字符 \x41 Ascll字符 3.多行字符串编写 <script>
'use strict';
//tab 上面 Esc 下面 piao~
var msg = `
hellow
wordld
niahoa
`
</script>
<script>
'use strict';
//tab 上面 Esc 下面 piao~
let name = "hbx";
let age = 3;
let msg = `你好呀,小赤佬${name}`
console.log("msg" + msg);
</script>
$$ ?
console.log(studnet.length)
?[) ?console.log(studnet.substring(1)) //从第一个字符串截取到最后一个字符串 ?console.log(studnet.substring(1,3)) //包头不包尾 3.2、数组Array可以包含任意的数据类型 ?var arr = {1,2,3,4,5,6}//通过下标取值
?arr[0]
?arr[0] = 1
字符串的“1”和数字 1 是不同的
?(3) ["B","C","A"] ?arr.sort() ?(3) ["A","B","C"]
?(3) ["B","C","A"] ?arr.reverse() ?(3) ["C","B","A"]
?(3) ["C","B","A"] ?arr.concat([1,2,3]) ?(6) ["C","B","A",1,2,3] ?arr ?(3) ["C","B","A"] 注意:concat()并没有修改数组,只会返回一个新的数组
打印拼接数组,使用特定的字符串连接、 ?(3) ["C","B","A"]
?arr.join('-')
?"C-B-A"
?arr = [[1,2][3,4]["5","6"]]; ?arr[1][1] ?4 数组:存储数据(如何存,如何取,方法都可以自己实现!) 3.3、对象 若干个键值对 ? ? ? var 对象名 = {
? ? ? ? ? 对象属性名:属性值,
? ? ? ? ? 对象属性名:属性值,
? ? ? ? ? 对象属性名:属性值
? ? ? ? ?
? ? ? }
? ? ? //定义了一个person对象,它有两个属性
? ? ? ? ? ?var person = {
? ? ? ? ? ? ? ? ?name:"hbx",
? ? ? ? ? ? ? ? ?age:22,
? ? ? ? ? ? ? ? ?email:"465230710@qq.com"
? ? ? }
??
JS中对象,{......}表示一个对象,键值对描述属性 xxxx:xxxx,多个属性之间使用逗号隔开,最后一个属性不加逗号! JavaScript中所有的键都是字符串,值是任意对象!
?delete person.name
?true
?person
?Object { age: 22, email: "465230710@qq.com" }
3.4、流程控制 forEach循环
? ? ? ? ?var age=[12,1,12,12,12,];
? ? ? ? ?//函数
? ? ? ? ?age.forEach(function (value){
? ? ? ? ? ? ?console.log(value)
? ? ? ? })
for...in ? ? //函数
? ? ? ? /*
? ? ? ? * for(Type str: el){}
? ? ? ? * */
? ? ? //for(var index in object){}
? ? ? ? for(var num in age){
? ? ? ? ? ? if(age.hasOwnProperty(num)){
? ? ? ? ? ? ? ? console.log("存在啊!!");
? ? ? ? ? ? ? ? console.log(age[num])
? ? ? ? ? ?
??
? ? ? ? }
3.4、Map 和 Set --ES6 的新特性 Map: 'use script';
//ES6 Map
//学生的成绩 , 学生的名字
// var names = ["tom","jack","hbx"];
// var score = [100,20,30];
var map = new Map([['tom',100],['jack',20], ['hbx',30]]);
var name = map.get('tom');//通过key获得value
map.set("admin",2252);//新增和修改
map.delete('tom');//删除
Set:无需不重复的集合 // new Set();
var set = new Set([1,2,1,1,1,23,5,2,1]); //可以去掉重复
set.add(555);//添加
set.delete(555);//删除
//是否包含某个元素
console.log(3 in set);
console.log(set.has(5));
3.6、iterator --ES6 新特性 遍历数组 //通过for in
//打印数组下标
var arr = [3,4,5];
for (var arrKey in arr) {
console.log(arrKey)
}
//通过for of
//打印数组值
for (var arrKey of arr) {
console.log(arrKey)
}
遍历Map var map = new Map([["tom",100],["jack",66],["hbx",99]]);
for (var mapElement of map) {
console.log(mapElement);
}
遍历Set var set = new Set([12,5,3]);
for (let setElement of set) {
console.log(setElement);
}
4、函数 4.1、定义函数
Java public 返回值类型 方法名(){
renturn 返回值;
}
绝对值函数 ?function abs(x){
? ? ?if(x>=0){
? ? ? ? ?return x;
? ? }else{
? ? ? ? ?return -x;
? ? }
?}
一旦执行return代表函数结束,返回结果! 如果没有执行return,函数执行也会返回结果结果就是
?var abs = function(x){
? ? ?if(x>=0){
? ? ? ? ?return x;
? ? }else{
? ? ? ? ?return -x;
? ? }
?}
function(x){.....}这是一个匿名函数,但是可以把结果赋给abs,通过abs就可以调用函数! 方式一和方式二等价!
?abs(10) //10 ?abs(-10)//10 参数问题:JavaScript可以传任意一个参数,也可以不传递参数! 参数进来是否存在的问题?假设不存在参数,如何规避 <script>
function abs(x){
//手动抛出异常来判断!
if(typeof x !== 'number'){
throw 'Not a Number'
}
if(x>=0){
return x;
}else{
return -x;
}
}
</script>
代表传递进来的所有的参数,是一个数组 function abs(x){
//手动抛出异常来判断!
// if(typeof x !== 'number'){
// throw 'Not a Number'
// }
console.log("x=>"+x);
for (let i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
if(x>=0){
return x;
}else{
return -x;
}
}
问题:arguments 包含所有的参数,我们有时候使用多余的参数来进行附加操作。需要排除已有参数~
if(arguments.length>2){
for(var i = 2;i<arguments.length;i++){
//...
}
}
ES6 引入的新特性,获取除了已经定义的参数之外的所有参数·.... 现在: function aaa(a,b,...rest){
console.log("a=>"+a);
console.log("b=>"+b);
console.log(rest);
}
rest参数只能写在最后面,必须用....标识 4.2变量的作用域 在Java script中,var定义变量是有作用域的。 假设在函数体中声明,则在函数体外不可以使用。(后面可以研究闭包) function hbx(){
var x = 1;
x = x + 1;
}
x = x + 1;//Uncaught ReferenceError: x is not defined
内部函数可以访问外部函数的成员,反之不行。 假设内部函数与外部函数的变量重名, function hbx(){
var x = 1;
function hbx1(){
var x = 3;
console.log('inner'+x);
}
console.log('outer'+x);
hbx1();
}
在JavaScript中函数查找变量从自身函数开始~,由“内”向“外”查找 假设外部存在这个同名的变量,则内部函数会屏蔽外部函数的变量。
function hbx(){
var x = "x" + y;
console.log(x);
var y = 'y';
}
结果: 说明JavaScript执行引擎自动提升了y的声明,但是不会提升y的赋值; 这个是在Java script建立之初就存在的特性。养成规范。 function hbx1(){
var y;
var x = "x" + y;
console.log(x);
y = 'y';
}
//全局变量
var x = 1;
function hxb(){
console.log(x);
}
function hbx(){
console.log(x);
}
全局对象window var x = 'xxxx'; alert(x); alert(window.x);//默认所有的全局变量都会自动绑定在window对象下;
var x = 'xxxx';
window.alert(x);
var old_alert = window.alert;
//old_alert(x);
window.alert = function (){
};
//发现alert()失效了
window.alert(123);
//恢复
window.alert = old_alert;
alert(456);
JavaScript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域都没有找到,报错
由于所有的全局变量绑定到我们的window上。如果不同的js文件,使用了相同的全局变量,冲突->如何减少冲突? //唯一全局变量
var HBX = {};
//定义全局变量
HBX.name = 'hanboxuan';
HBX.add = function (a,b){
return a+b;
}
把自己的代码全部放入自己定义的唯一空间名字中,降低全局变量命名冲突的问题 JQuery
function f(){
for (var i = 0; i < 100; i++) {
console.log(i);
}
console.log(i+1);
}
ES6关键字,解决局部作用域冲突的问题 let去定义局部作用域的变量
const pi = '3.14';//只读变量 console.log(pi); pi = 5;//error 4.3、方法
方法就是把函数放在对象的里面,对象只有两个东西:属性和方法 var hbx = {
name : '韩博轩',
brith : 2001,
age : function (){
//今年-出生年月
var now = new Date().getFullYear();
return now - this.brith;
}
}
//属性
hbx.name
//方法,一定要带括号
hbx.age()
function getAge(){
//今年-出生年月
var now = new Date().getFullYear();
return now - this.brith;
}
var hbx = {
name : '韩博轩',
brith : 2001,
age : getAge()
}
this.代表什么?拆上面的代码看看 function getAge(){
//今年-出生年月
var now = new Date().getFullYear();
return now - this.brith;
}
var hbx = {
name : '韩博轩',
brith : 2001,
age : getAge()
}
//hbx.age() ok
//getAge() NaN
this是无法指向的,是默认指向调用它的那个对象;
在js中可以控制this指向。 function getAge(){
//今年-出生年月
var now = new Date().getFullYear();
return now - this.brith;
}
var hbx = {
name : '韩博轩',
brith : 2001,
age : getAge()
};
//hbx.age() ok
//getAge() NaN
getAge().apply(hbx,[]);//空参 this指向了狂神这个对象参数为空
5、内部对象
?typeof 123
??
?"number"
??
?typeof '123'
??
?"string"
??
?typeof true
??
?"boolean"
??
?typeof NaN
??
?"number"
??
?typeof []
??
?"object"
??
?typeof {}
??
?"object"
??
?typeof Math.abs
??
?"function"
??
?typeof undefined
??
?"undefined"
5.1、Date
?? ?now.getFullYear() ?2022 ?now.getMonth() ?2 ?now.getDay();//星期几 ?4 ?now.getDate();//days ?24 ?now.getHours(); ?19 ?now.getMinutes(); ?47 ?now.getSeconds(); ?39 ?now.getTime(); ?? ?1648122459414 ?? ?console.log(new Date(1648122459414)) ?? ?Date Thu Mar 24 2022 19:47:39 GMT+0800 (中国标准时间) ?? ?? ?var now = new Date();//console.log(now) ? ? ? Date Thu Mar 24 2022 19:44:30 GMT+0800 (中国标准时间) ?now.getFullYear();//years ?now.getMonth()//0-11 代表月 ?now.getDay();//星期几 ?now.getDate();//days ?now.getHours(); ?now.getMinutes(); ?now.getSeconds(); ?now.getTime();//时间戳 全世界统一 1970 1.1 0:00:00 毫秒数 转换 ?now = new Date(1648122459414) ?Date Thu Mar 24 2022 19:47:39 GMT+0800 (中国标准时间) ?now.tolocaleString//注意调用是一个方式,不是一个属性! ?now.toGMTString ?function toUTCString() ?? ?now.toGMTString() ?"Thu, 24 Mar 2022 11:47:39 GMT" 5.2、
|
|
|
| JavaScript知识库 最新文章 |
| ES6的相关知识点 |
| react 函数式组件 & react其他一些总结 |
| Vue基础超详细 |
| 前端JS也可以连点成线(Vue中运用 AntVG6) |
| Vue事件处理的基本使用 |
| Vue后台项目的记录 (一) |
| 前后端分离vue跨域,devServer配置proxy代理 |
| TypeScript |
| 初识vuex |
| vue项目安装包指令收集 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 21:29:35- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |