n1cef1sh's Blog

how to git

安装

官网下载最新版
安装流程基本按照默认,具体需求看个人。
考虑到太繁琐就取消了把git bash和git gui添加到右键菜单,但是使用中发现不是太方便。于是摸索了一下添加右键菜单的方式。

使用

git init

当前目录下就会出现一个.git的隐藏文件,此时该文件夹已成为受控制的文件夹。

git add test.txt
git commit -m "first commit" //注释说明
git remote add origin https://github.com/n1cef1sh/VScode_Git_Test.git 
git push -u origin master  //提交到你的仓库

vscode同步代码到github

JS

基础

    var carName = "porsche";
    var carName ;
    //carName值仍是porsche
    var x = 10;
    var y = 20;
    var z = "The result is: " + x + y;
    //The result is: 1020
    var points = [40,100,1,5,14,10];
    points.sort(function(a,b){return a- b});//升序

如果数组里是对象,也可以通过比值函数进行排序

    Math.floor(Math.random() * 10);		// 返回 0 至 9 之间的数
    Math.floor(Math.random() * 11);		// 返回 0 至 10 之间的数
    Math.floor(Math.random() * 100);	// 返回 0 至 99 之间的数
    Math.floor(Math.random() * 101);	// 返回 0 至 100 之间的数

一般创建一个随机函数用于生成所有随机整数比较方便

//不包括min和max
function getRndInteger(min, max) {
    return Math.floor(Math.random() * (max - min) ) + min;
}

//包括min和max
function getRndInteger(min, max) {
    return Math.floor(Math.random() * (max - min + 1) ) + min;
}

Hoisting 变量提升

Hoisting 是 JavaScript 将所有声明提升到当前作用域顶部的默认行为(提升到当前脚本或当前函数的顶部)。
简单说就是可以在声明变量之前使用它。

x = 5; // 把 5 赋值给 x
 
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x;                     // 在元素中显示 x

var x; // 声明 x
console.log(num); // Returns undefined 
var num;
num = 6;

严格模式

关键词let

通过let声明拥有块作用域的变量。在块{}内声明的变量无法从块外访问。

关键词const

const PI = 3.141592653589793;
PI = 3.14;      // 会出错
PI = PI + 10;   // 也会出错

// 可以创建 const 对象:
const car = {type:"porsche", model:"911", color:"Black"};
// 可以更改属性:
car.color = "White";
// 可以添加属性:
car.owner = "Bill";
const cars = ["Audi", "BMW", "porsche"];
//可以更改元素:
cars[0] = "Honda";
//可以添加元素:
cars.push("Volvo");

const cars = ["Audi", "BMW", "porsche"];
cars = ["Honda", "Toyota", "Volvo"];    // ERROR

注意事项

避免全局变量、new、===、eval()

常见错误

var x = 0.1;
var y = 0.2;
var z = x + y             
//0.30000000000000004

var z = (x * 10 + y * 10) / 10;       
//0.3
var x = "Hello \
World!";
if (typeof myObj !== "undefined" && myObj !== null)

JS对象

对象定义

var person = {
    firstName:"Bill",
    lastName:"Gates",
    age:62,
    eyeColor:"blue"
};

对象构造器

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";//新增
}
function Person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    //新增
    this.changeName = function (name) {
        this.lastName = name;
    };
}

对象原型

所有 JavaScript 对象都从原型继承属性和方法。
日期对象继承自 Date.prototype。
数组对象继承自 Array.prototype。
Person 对象继承自 Person.prototype。
Object.prototype 位于原型继承链的顶端:
日期对象、数组对象和 Person 对象都继承自 Object.prototype。

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
    return this.firstName + " " + this.lastName;
};

DOM

文档对象模型(Document Object Model)

HTML DOM

<html>
<body>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = "Hello World!";
</script>

</body>
</html>

getElementById 方法使用 id=”demo” 来查找元素。 innerHTML 属性可用于获取或替换 HTML 元素的内容。

元素

查找HTML元素的方式

var x = document.getElementsByTagName("p");
var x = document.querySelectorAll("p.intro");

事件监听器

element.addEventListener(event, function, useCapture);

第一个参数是事件的类型(比如 “click” 或 “mousedown”)。

第二个参数是当事件发生时我们需要调用的函数。

第三个参数是布尔值,指定使用事件冒泡还是事件捕获。此参数是可选的。

AJAX

AJAX = Asynchronous JavaScript And XML.

简介

AJAX 代表异步 JavaScript 和 XML。是一种从网页访问 Web 服务器的技术。

  1. 网页中发生一个事件(页面加载、按钮点击)
  2. 由 JavaScript 创建 XMLHttpRequest 对象
  3. XMLHttpRequest 对象向 web 服务器发送请求
  4. 服务器处理该请求
  5. 服务器将响应发送回网页
  6. 由 JavaScript 读取响应
  7. 由 JavaScript 执行正确的动作(比如更新页面)

XMLHttpRequest对象

作为Ajax的核心,XMLHttpRequest 对象用于同幕后服务器交换数据。这意味着可以更新网页的部分,而不需要重新加载整个页面。

向服务器发送请求

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();

服务器响应

JSON

JavaScript Object Notation(JavaScript 对象标记法)是一种存储和交换数据的语法。

WHY JSON

因为 JSON 格式仅仅是文本,它能够轻松地在服务器浏览器之间传输,并用作任何编程语言的数据格式。

//存储数据:
myObj = { name:"Bill Gates",  age:62, city:"Seattle" };
myJSON =  JSON.stringify(myObj);
localStorage.setItem("testJSON", myJSON);

//接收数据:
text = localStorage.getItem("testJSON");
obj =  JSON.parse(text);
document.getElementById("demo").innerHTML = obj.name;

和XML差异

最大的不同在于: XML 必须使用 XML 解析器进行解析。而 JSON 可通过标准的 JavaScript 函数进行解析。

动态HTML表格

<!DOCTYPE html>
<html>
<body>

<h2>做一个基于下拉列表值的表格。</h2>

<select id="myselect" onchange="change_myselect(this.value)">
  <option value="">Choose an option:</option>
  <option value="customers">Customers</option>
  <option value="products">Products</option>
  <option value="suppliers">Suppliers</option>
</select>

<p id="demo"></p>

<script>
function change_myselect(sel) {
  var obj, dbParam, xmlhttp, myObj, x, txt = "";
  obj = { table: sel, limit: 20 };
  dbParam = JSON.stringify(obj);
  xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      myObj = JSON.parse(this.responseText);
      txt += "<table border='1'>"
      for (x in myObj) {
        txt += "<tr><td>" + myObj[x].name + "</td></tr>";
      }
      txt += "</table>"    
      document.getElementById("demo").innerHTML = txt;
      }
    };
  xmlhttp.open("POST", "json_demo_db_post.php", true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlhttp.send("x=" + dbParam);
}
</script>

</body>
</html>

QQ截图20200921150120.png

小测验

1.我们可以在下列哪个 HTML 元素中放置 Javascript 代码?

正确回答:<script>

2.写 "Hello World" 的正确 Javascript 语法是?

正确回答:document.write("Hello World")

3.插入 Javacript 的正确位置是?

正确回答:<body> 部分和 <head> 部分均可

4.引用名为 "xxx.js" 的外部脚本的正确语法是?

正确答案:<script src="xxx.js">

5.外部脚本必须包含 <script> 标签吗?

正确答案:否

6.如何在警告框中写入 "Hello World"?

正确回答:alert("Hello World")

7.如何创建函数?

正确答案:function myFunction()

8.如何调用名为 "myFunction" 的函数?

正确回答:myFunction()

9.如何编写当 i 等于 5 时执行一些语句的条件语句?

正确答案:if (i==5)

10.如何编写当 i 不等于 5 时执行一些语句的条件语句?

正确回答:if (i != 5)

11.在 JavaScript 中,有多少种不同类型的循环?

正确答案:两种。for 循环和 while 循环。

12.for 循环如何开始?

正确答案:for (i = 0; i <= 5; i++)

13.如何在 JavaScript 中添加注释?

正确答案://This is a comment

14.可插入多行注释的 JavaScript 语法是?

正确回答:/*This comment has more than one line*/

15.定义 JavaScript 数组的正确方法是?

正确回答:var txt = new Array("George","John","Thomas")

16.如何把 7.25 四舍五入为最接近的整数?

正确回答:Math.round(7.25)

17.如何求得 2 和 4 中最大的数?

正确回答:Math.max(2,4)

18.打开名为 "window2" 的新窗口的 JavaScript 语法是?

正确答案:window.open("http://www.w3school.com.cn","window2")

19.如何在浏览器的状态栏放入一条消息?

正确答案:window.status = "put your message here"

20.如何获得客户端浏览器的名称?

正确答案:navigator.appName

参考

w3school