JavaScript

JS

变量

// var let const
var: 很少使用,全局作用域
let: 值可以被修改
const: 值不能被修改,而且需要在声明时初始化数值


console.log('hello world')		// 这是我的第一个js代码;

let bbb         // 声明
bbb = 30        // 赋值
bbb = 31        // 修改
console.log(bbb)        // 调用

const aaa = 50      // aaa 定义为50,因为是常量后面不允许修改
console.log(aaa)    // 调用

// 输出
hello world
31
50

数据类型

  • 值类型:String、Number、Boolean、Null、Undefined、Symbol
  • 引用类型:对象、数组、函数、另外两个特殊的对象:正则和日期
// String, Number, Boolean, null, undefined
String: 字符串
Number:数字,不区分小数点与整数
Boolean: 布尔
null:定义为空
undefined: 没定义,当不赋值也是没定义


const username = "tcy";
const age = 30;
const rate = 4.5;
const isCool = true;
const x = null;
const y = undefined;
let z;

console.log(typeof rate)            // 查询值的类型

String

// string 字符串拼接的两种方式
console.log("我是:" + username)
console.log(`我是:${username}`)

// 内置属性与方法,不带括号为属性,带括号为方法
const s = 'hello world'
console.log(s.length)           // 获取变量s所对应值的长度
console.log(s.toUpperCase())    // 将变量s所对应值转换为大写
console.log(s.toLowerCase())    // 将变量s所对应值转换为小写
console.log(s.substring(0,5))   // 将变量s对应值进行切割,只取前5个字符串
console.log(s.substring(0,5).toUpperCase())     // 使用方法下的方法
console.log(s.split(''))        // 将每个字符都进行分割

数组

  • 数组为可变类型
  • 更多方法可以查询JavaScript官网
const fruits = ["apples","orages","pears",10,true]      // 定义数组
console.log(fruits)         // 调用数组,显示全部
console.log(fruits[1])      // 显示第二个元素
fruits[1] = "apples"        // 将第二个元素进行修改
console.log(fruits[1])      // apples
fruits.push("mangos")       // 将数组后添加一位元素
console.log(fruits)         // [ 'apples', 'apples', 'pears', 10, true, 'mangos' ]
fruits.unshift("strawberries")  // 在数组头部添加元素
console.log(fruits)            // [ 'strawberries', 'apples', 'apples', 'pears', 10, true, 'mangos' ]
fruits.pop()                // 删除数组最后一位元素
console.log(fruits)         // [ 'strawberries', 'apples', 'apples', 'pears', 10, true ]
console.log(Array.isArray(fruits))  // 判断是否为数组,结果为true
console.log(fruits.indexOf("apples"))   // 查找元素索引位置,结果为1

对象

  • 类似于Go的字典,可以对象中保存对象
  • JavaScript 变量均为对象。当声明一个变量时,就创建了一个新的对象。
// 定义对象
const person = {
    firstName: "tang",
    lastName: "meinv",
    age:30,
    hobbies: ["music","movies","sports"],
    address: {
        street: "50 main st",
        city: "Boston",
        state: "MA",
    },
}
console.log(person)
console.log(person.firstName)           // 对象.属性名的方法 访问任何一个属性
console.log(person.hobbies[1])
console.log(person.address.state)

// 输出
{
  firstName: 'tang',
  lastName: 'meinv',
  age: 30,
  hobbies: [ 'music', 'movies', 'sports' ],
  address: { street: '50 main st', city: 'Boston', state: 'MA' }
}
tang
movies
MA

  • 结构
const {firstName,lastName} = person      // 使用同名变量将值从person抽离
console.log(firstName)      			// tang
const {address: {city}} = person    	// 将对象中的对象进行抽离
console.log(city)                   	// Boston
person.email = "json"               	// 添加新的属性

对象数组

const todos = [
    {
        id: 1,
        test: "Take out trash",
        isCompleted: true,
    },
    {
        id: 2,
        test: "Metting with boss",
        isCompleted: true,
    },
    {
        id: 1,
        test: "Dentist appt",
        isCompleted: false,
    },
]


console.log(todos)

// 输出
[
  { id: 1, test: 'Take out trash', isCompleted: true },
  { id: 2, test: 'Metting with boss', isCompleted: true },
  { id: 1, test: 'Dentist appt', isCompleted: false }
]
  • 对象数组转变为json
  • 场景:将对象数组传输给服务器,需要转换为json格式
const todos = [
    {
        id: 1,
        test: "Take out trash",
        isCompleted: true,
    },
    {
        id: 2,
        test: "Metting with boss",
        isCompleted: true,
    },
    {
        id: 1,
        test: "Dentist appt",
        isCompleted: false,
    },
]


const todoJSON = JSON.stringify(todos)
console.log(todoJSON)

if 判断

const x = 10
if (x == "10") {                      // 判断值是否一致
    console.log("x is 10")            // 输出结果
}

if (x === "10") {                      // 判断值与类型是否一致
    console.log("x is 10")             // 结果不输出,因为仅值一致,类型并不相同
} else if (x > 10) {
    console.log("x is greater than 10") 
}else {
    console.log("x is not 10")         // x is not 10
}

const a = 10
const b = 20
if (a > 8 || b < 19) {                  // 多条件判断,两者其一满足均可触发
    console.log("a is more than 10 or b is more than 19")
}

if (a > 9 && b > 10) {                  // 多条件判断,两者都需要满足才能触发
    console.log("a is more than 10 or b is more than 19")
}

三目运算符

const d = 10;
const color = d > 5 ? "red" : "blue"    // ?为 表示条件为真,:为else
console.log(color)                  // red

Switch

const d = 10;
const color = d > 5 ? "red" : "blue"    // ?为 表示条件为真,:为else
console.log(color)                  // red


switch (color) {					  // 将color变量填入
    case "red":						  // 判断值是否为red
        console.log("color is red");
        break
    case "blue":
        console.log("color is blue");
        break
    default:						  // 当都不满足触发default执行
        console.log("color is Not red or blue");
}

for & While

for (let i = 0;i < 10; i++) {           // let 声明变量,定义条件,并实现循环后递增
    console.log(i)
}

for (let i = 0;i <= 10; i++) {           // let 声明变量,定义条件,并实现循环后递增
    console.log(i)
}


const todos = [
    {
        id: 1,
        test: "Take out trash",
        isCompleted: true,
    },
    {
        id: 2,
        test: "Metting with boss",
        isCompleted: true,
    },
    {
        id: 1,
        test: "Dentist appt",
        isCompleted: false,
    },
]

for (let i = 0;i < todos.length;i++) {			// 方式一:遍历数组元素中的test属性
    console.log(todos[i].test)
}

for (let todo of todos) {					  // 方式二:遍历数组元素中的test属性
    console.log(todo.test)
}

let i = 0;							 // while需要在循环体外定义变量
while (i < 10) {					  // 触发条件
    console.log(`While Loop Number: ${i}`);	
    i++								 
}

函数

  • 关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。
function myFunction() {              // 定义函数
    console.log("hello world")
}

myFunction()                         // 调用函数
  • 带参函数
function argFunction(arg1,arg2) {
    console.log("Welcome " + arg1 + ", the " + arg2)
}

argFunction('tcy','job')
  • 函数返回值
  • "demo" 元素的 innerHTML 将是12
// 返回a*b
function myFunction(a,b) {
    return a * b;
}

document.getElementById("demo").innerHTML=myFunction(4,3);	// 查找html中元素id为demo,并修改结果为myFunction的返回值
posted @ 2023-07-05 14:33  元气少女郭德纲!!  阅读(56)  评论(0编辑  收藏  举报