| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> JavaScript知识库 -> J S基础 -> 正文阅读 |
|
|
[JavaScript知识库]J S基础 |
1. 基础1.1 javaScript 的组成ECMScirpt(js语法规范)、DOM(文档对象模型)、BOM(浏览器对象模型) 1.2 怎么写javaScript
1.3 注释//单行 /* 多行 */ <!-- 多行 --> (html文档) 2. 变量//声明变量 var var age = 18; var age; age = 18; 控制台打印函数 console.log() 2.1.1 命名规则
2.1.2 命名规范
2.2 基本数据类型:隐式类型转化 例如:非纯数字字符串转化为数字类型,其值为NaN。
2.3 复杂数据类型:object: // 声明
var person = new Object();
person.name = "zark";
//声明对象
var person = {};
person.age = 15;
//另一种声明,多个属性用,隔开
var person = {
hobby : "jump",
height : 170
};
//json对象
//格式要求:属性和属性值都加引号(非字符串值除外)
var person = {
"hobby" : "jump",
"height" : 170
};
2.4 数据类型转换//typeof 函数 查看数据类型 var age = 18; console.log(typeof age); // 输出number
2.5 运算符++num与num++的区别: ++num是优先自增1,再进行其他运算;num++是先进行其他运算,最后自增1 (*  ̄︿ ̄) 运算符优先级: ? 括号>点运算符>一元运算符> 算数运算符 >关系运算符>逻辑运算符 >赋值运算符 2. 流程控制2.0 顺序结构默认从上而下顺序执行 2.1 分支结构弹出输入框函数 prompt(), 点击确认返回输入的值(输入默认为字符串),取消返回null,参数为提示信息 var age = prompt("input age:");
if (200 >= age >= 65) {
console.log("老年");
} else if (age >= 18) {
console.log("青年");
} else if (age > 0) {
console.log("未成年");
} else {
console.log("输入有误");
}
If语句会把后面的值隐式转换成布尔类型 转换为true的有 : 非空字符串 非0数字 true 任何对象 转换成false的有 : 空字符串 0 false null undefined
表达式1 ? 表达式2 : 表达式3; 相当于if...else...的缩写 var age = prompt("input age:");
// 满足条件执行第一条,不满足条件执行第二条
age >= 18 ? console.log("青年") : console.log("未成年");
使用严格比较,数据类型和数值都要相同; switch里的值默认为字符串,判断时有需要应使用强制类型转换 var day = prompt("input day(1-3):");
switch (Number(day)) {
case 1:
console.log("周一");
break;
case 2:
console.log("周二");
break;
case 3:
console.log("周三");
break;
default:
console.log("输入有误");
break;
}
2.2 循环结构
var a = 1;
while (a <= 10) {
console.log(a);
a++;
}
var b = 1;
do {
console.log(b);
b++;
} while (b < 10);
for (var c = 1; c < 10; c++) {
console.log(c);
}
新的方法:
break:立即跳出整个循环,即循环结束 continue:立即跳出当前循环,继续下一次循环 2.3 调试弹窗? 断点? 控制台打印? 3. 数组定义:多个元素的有序集合。 数组的数据类型为 object 数组的length属性 : 数组的长度; 数组元素可以为任意数据类型 3.1 创建var arr1 = new Array(); var arr2 = [1, 2, 3, 4, 5]; console.log(arr2); 3.2 取值按下标取值,下标从0开始; 下标越界时,值为undifined; console.log(arr2[5]); //此时取值超出数组长度,返回undifined
// for循环取值
for (var i = 0; i < arr2.length; i++) {
console.log(arr2[i]);
}
3.3 修改
// push: 从最后添加一个或多个值(返回值为数组的长度); pop: 从最后删除一个值(返回值为删除的值); // unshift: 从开始添加一个或多个值(返回值为数组的长度); shift: 从开头删除一个值(返回值为删除的值); arr2.push(60, 70, 80); arr2.pop(); arr2.unshift(11, 22, 33); arr2.shift(); console.log(arr2); 3.4 数组去重indexOf()返回数组中指定元素的第一个值的索引,不存在返回-1 var arr1 = [1, 2, 3, 3, 4, 6];
var arr2 = [];
// 第一种方法
for (var i = 0; i < arr1.length; i++) {
if (arr1.indexOf(arr1[i]) == i) {
arr2.push(arr1[i]);
}
}
// 第二种方法
for (var i = 0; i < arr1.length; i++) {
if (arr2.indexOf(arr1[i]) == -1) {
arr2.push(arr1[i]);
}
}
console.log(arr2);
3.5 冒泡排序i控制轮数,j控制每轮比较次数 var arr3 = [2, 4, 7, 9, 5, 1];
for (var i = 0; i < arr3.length - 1; i++) {
for (var j = 0; j < arr3.length - i - 1; j++) {
if (arr3[j] > arr3[j + 1]) {
var temp = arr3[j];
arr3[j] = arr3[j + 1];
arr3[j + 1] = temp;
}
}
}
console.log(arr3);
4. 函数为了把一段特定功能的代码块封装起来,减少代码冗余 4.1 定义// 具名函数
function name1() {
console.log(2);
}
// 匿名函数
var k = function () {
console.log(1);
}
4.2 调用
4.3 参数形参(定义时); 实参(调用时),需要传递参数的函数在调用时没有传递实参,返回值为undifined function plus(num1, num2) {
console.log(num1 + num2);
}
plus(2, 5);
4.4 返回值function rate(money) {
return money * 3; //调用函数时不会显示,不写返回值默认返回undifined,return只能有一个
}
rate(100);
注意事项:定义在函数里的局部变量每次调用函数都会重新初始化;函数里使用外部全局变量,重复调用不会初始化 4.5 新方法保留几位小数 var a = 1.24325; a.toFixed(3); 5. 对象任何事物都可以是对象,可以使用对象简化多参数的函数 5.1 创建对象的方法
var obj = {
name: "zs",
age: 18
}
var obj = new Object (); obj.name = "zs"; obj.age = 19;
function Person(age, name) { //注意规范:函数名首字母大写
var obj = new Object();
obj.name = name;
obj.age = age;
}
function Person(name, age){
this.name = name;
this.age = age;
}
var p1 = new Person('zs', 22);
5.2 操作对象的属性
var obj = {
name: "zs",
age: 18,
1: "shuzi"
}
// 取得单个属性时
obj["name"]
obj.age
// 给对象增加属性
obj[variable] = value;
obj.string = "value";
// 通过遍历的方式
for (var key in obj) {
console.log(obj[key]); // []里默认是变量
}
delete 属性名.属性值
5.3 数组去重:利用对象属性 var arr1 = [1, 2, 2, 4, 4, 5];
var arr2 = [];
var obj = {};
for (var i = 0; i < arr1.length; i++) {
if (!obj[arr1[i]]) {
arr2.push(arr1[i])
obj[arr1[i]] = 1;
}
}
console.log(arr2);
6. 预解析/作用域/错误6.1 函数补充6.1.1 函数的覆盖问题
6.1.2 函数的内置对象 arguments对象是比较特别的一个对象,实际上是函数的一个内置属性。 arguments对象是一个伪数组; arguments数组中前几个元素是函数的参数
6.1.3 自执行函数 可以通过给匿名函数本身加括号的方式来一次性调用匿名函数,称为自执行函数 (function () {
alert(123);
})();
6.1.4 函数的数据类型 函数是一种数据类型 名为function;可以被用作参数使用 6.2 预解析JavaScript引擎在对JavaScript代码进行解释执行之前,会对JavaScript代码进行预解析,将以关键字var和function开头的语句块提前进行处理 注意事项:var 仅预处理变量的声明,不包括赋值。 6.2.1 特殊情况 当变量和函数同名时,只会对函数声明进行提升,变量会被忽略。 But 同名的变量和函数,变量会覆盖函数,导致函数无法调用 通俗来讲就是只要出现同名的函数和变量,优先对函数进行提升。但没用,变量会覆盖函数,最终只有变量声明语句生效 6.2.2 预解析作用域
6.3 作用域6.3.1 全局作用域 直接写在 script 标签或 js 文件中的JS代码,都是全局作用域; 全局对象 window 代表浏览器窗口; 所有创建的变量、函数都是window对象的属性 6.3.2 局部作用域(函数作用域) 在函数内部的是局部作用域,代码只在函数的内部起作用 函数执行完毕,局部作用域销毁 6.3.3 隐式全局变量 不用var关键字声明的变量。(不要用!禁) 6.5 javaScript错误console.error();//错误信息
console.warn();//警告信息
console.info();//普通信息
try {
balert("没错");
} catch (error) {
console.log("出错了,错误信息为: " + error.message);
}
// throw用于自定义错误信息,后接抛出自定义的错误信息
try {
if (x=NaN) throw "错误";
} catch (error) {
console.log(error);
}
|
|
|
| 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年12日历 | -2025/12/4 6:15:58- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |