
1、js是什么
前后端或者全栈开发
js应用及增长最快的语言
后端就是node.js
区别:
JS 是“胶水语言”:为 Web 而生,动态、灵活、安全(沙箱环境),但性能受限于解释执行(虽有 JIT 优化)。
C 是“硬件代言人”:贴近机器、高效、无抽象,适合操作系统级开发,但易出内存错误。
C++ 是“全能战士”:兼顾底层控制和高级抽象,性能接近 C,但复杂度高(如指针、模板元编程)。
2、js可以用来做什么
浏览器里做交互式网页
可开发(web/移动端APP、实时联网APP、命令行工具、游戏)
现在很多游戏都是用js+浏览器内核开发
典型应用场景:网页动态效果(如表单验证、动画)、单页应用(SPA)、服务器端(Node.js)。
3、js在哪里运行
以前是要运行在浏览器里的js引擎
firefox:SpiderMonkey
Chrome:V8
大神Ryan Dahl
开源的js引擎从Google浏览器里拿出来,和一个C++结合,叫做Node,就是一个包含Google浏览器v8引擎的C++程序
js代码传递Node执行,js就可以做网站后端了
4、第一个js程序
F12 Console
console.log('hello world');
2+2=4
alert('zmx');
5、搭建开发环境
vscode和node,可以执行js代码,还可以安装第三方库
新建文件夹 index.html
!加上Tab 就会自动生成html代码 作为js代码的容器
拓展中下载Live Server 右击 或者F5 就会打开本地网页 会自动更新
6、在浏览器中运行JavaScript
可以在head和body标签里添加js代码
一般在body标签末尾 script 按下Tab补全
放在body末尾是因为html是从上往下解析,如果先输js,则会忙于解析,而不是显示页面内容
script很多代码要和页面空键交互,比如显示隐藏,保证空键被浏览器先渲染完成
除非某些第三方库要求在head引入
console.log('hello world');
双斜杠注释
7、编码原则之关注点分离
html是页面内容,js是页面行为
将关注点分离
添加index.js
可以在index.html中引用js文件
<script src="index.js"></script>
8、使用node运行JavaScript
安装node 打开命令行 node --version
ctrl+` 快捷打开vscode终端
输入node index.js 即成功执行
9、变量与常量
三个关键字声明 var Let const
var全局作用域,说明两个同名的变量 导致冲突
Let const ens2015
let值可以被修改 const不行
如:
let age = 30;
console.log(age);
重新赋值let就行 而且let可以先不赋值 const就会报错 要在声明时就赋值
但是const是常量,除非声明的是数组或对象
只是不能完全更改
10、原生数据类型
string,Number,BooLean,null,undefined
没有浮点型 小数整数都是Number
例如:
const a = 'coke';
const b = 10;
const c = 1.5;
const d = true;
const e = null;----->null表示为指针 0x00 null值标记为0 就是object js类型标记和值
const f = undefined;
let z;
console.log(typeof e)--->object
11、模板字符串
老方法
const username = "coke";
const age = "20";
console.log("my name is "+ username +" and I am age");
新方法
console.log(`My name is ${username} and I am ${age}`);
赋值
const hello = `My name is ${username} and I am ${age}`;
console.log(hello);
12、字符串的内置方法
const s = "hello world";
获取长度
console.log(s.Length);
全大写
console.log(s.toUpperCase());
全小写
console.log(s.toLowerCase());
全部分割开
console.log(s.substring(0,5));
显示hello 01234开始算
还可以再使用一个方法
console.log(s.substring(0,5).toUpperCase());
字符串转换数组
console.log(s.sqlit('')); //留空是最小分割,元字符串内容
特定分割内容分割字符串
const s = "technology,computers,it,code";
console.log(s.split(","));
分割好的有四个元素的数组
显示
0:"technology"
1:"computers"
13、数据类型之数组
数组内部储存很多元素
创建:
1、构造函数,面向对象编程
const numbers = new Array(1,2,3,4,5);
console.log(numbers);
2、常用 中括号内可以是不同数据类型的 动态语言的灵活性
const fruits = ['apple','oranges','pears'];
console.log(fruits);
也可以这样输出 从0开始的
console.log(fruits[1]);--->oranges
数组本身的容器不可变,但是容器里面的东西可以变
数组内部方法
(1)使用shift()可以删除数组头部元素
(2)const定义数组后,使用fruits[3] = "grapes"; 再添加元素
(3)fruits.push 在数组末尾添加元素
(4)ftuits.unshift 在数组头部添加元素
(5)fruits.pop 删除数组末尾元素
(6)console.log(Array.isArray("hello"));
判断是否是数组,true
(7)console.log(fruits.indexOf("oranges"));
得到特定元素索引
14、对象
const person = {
firstname:"john",
lastname: "Doe",
age: 30,
honnies:["music","movies","sports"],
address:{
street:'20 main st',
city:"shanghai",
state: "MA",
},
};
拥有属性和方法的数据,表示为键值对的组合
花括号表示对象,同一个对象中,属性可以是任何类型,甚至数组或者对象
console.log(person.firstname,person.lastname);
console.log(person.hobbies[1]);
console.log(person.address.city);
结构
const { firstname, lastname } = person;
同名变量抽取出来
再打印什么就出什么
如console.log(city);
也可以通过
person.email = "john@163.com";
添加新的属性
15、对象数组和JSON
创建对象数组 多个
const todos = [
{
id:1,
text:"hello",
isCompleted:true,
}, {
id:2,
text:"nihao",
isCompleted:true,
}, {
id:3,
text:"hi",
isCompleted:false,
},
];
console.log(todos[1].text) ---> nihao
JSON是一种数据格式,常用于API和服务器与客户端的数据传输过程
网站:freeformatter.com
粘贴对象数组内容就可以生成JSON格式
或者用JSON.stringify()方法
const todoJSON = JSON.stringify(todos)
console.log(todoJSON);
16、条件语句
一般都是三等号保证数据类型也相同
const x = 10;
if (x = = = 10 ){
console.log("x is 10");
} else{
console.log("x is not 10");
}
其他条件区块
const x = 4;
if (x = = = 10 ){
console.log("x is 10");
} else if (x > 10){
console.log("x is greater than 10");
} else{
console.log("x is less than 10");
}
输出 x is less than 10
或 ||
if (x > 5 || y < 10){
console.log("111111")
}
且 &&
17、三目运算符
const x =10;
const color = x > 10 ? "red" : "blue";
console.log(color);
?条件为真
:条件为假
18、Switch条件语句
switch(color){
case 'red':
console.log("color is red");
break;
case "blue";
console.log("color is blue");
break;
default:
console.log("color is NULL");
}
break才会停止,否则就会都执行完才停
19、循环 for和while
for循环
for (let i = 0; i <= 10; i++){
console.log(`For Loop Number: ${i}`);
}
定义一个模板,输出所有i值
while循环 要在外部声明循环变量 在while里改循环变量,否则死循环
let i = 0;
while (i < 10){
console.log(`while Loop Number: ${i}`);
}
对象数组作为循环对象
for (let i = 0; i < todos.length; i++){
console.log(todos[i].text);
}
另一种for循环 声明一个新的zmx 就是新的变量
for (let zmx of todos){
console.log(zmx.id);
}
小结
为js漏洞做铺垫 大多数编程语言类似 还是学c先
gym 最后一天
明天看一节Js 剩余时间看wireshark
Comments NOTHING