JS快速入门

布鲁斯前端学习笔记

笔记

这里是主要的笔记内容


环境安装+基本变数

  1. VScode 安装Live server

  2. 新建一个x.js、x.html文档

  3. 在html文档里引入js文档(输入!自动生成)

  4. 在中

  5. ctrl+shift+p
    在这里插入图片描述

  6. 点击右下角 Go Live——即时更新在档案上的程序语言

  1. 比如:在body下输入一个p标签:

    hello 赫林丁

在这里插入图片描述

  1. 对该网页右键检查

在这里插入图片描述

  1. 进入js文档

    输入 console.log(100)

在这里插入图片描述

会显示一条讯息

基本变数

let ——宣告一个容器 (也就是赋值)

容器的名字——驼峰式命名:myName

  • 五个基本变数

  • 字串连接&数字加减乘除

let myName = '赫林丁'  //string 字串  //备注功能
let age2 = '我的年龄:20岁'
let word = myName + age2  //+连接字符串
console.log(myName)
console.log(word)



let age = 20  //整数、小数都是数字
console.log(age)
// + - * / %(取余数)
console.log(age + 1)

let isFake = false   //布林值 true or false
console.log(isFake)


let bag = undefined  //空值
console.log(bag)

let bag2 = null  //null 跟 undefined 都表示空值但不相同 ,挑一个用就行,以后再了解原理
console.log(bag2)


//以上是五个基本变数
// 除了 let 还可以用 var const宣告变数

// let几乎可以取代var 一般不用var

let a1 = 'aaa'
console.log(a1)
//修改a1的内容
a1 = 'bbb'
console.log(a1)
//由上到下执行,两个a1不一样,无法改变

//const最主要的用途,不能改变变数的值


// const a1 = 'aaa'
// console.log(a1)
// //修改a1的内容
// a1 = 'bbb'
// console.log(a1) //会报错

陈列与物件

记得在html文件里换成想要引入的js文件
点击on live后在网页里点击html文件才能生成一个Document

let classA = ['A','B','C']  //生成阵列
console.log('转学前:',classA)

classA.push('D')  //新增一个人
console.log('转学后:',classA)

//取得阵列的长度
console.log(classA.length) 
//用于回圈计数器

let igPhotos = [
    'http://xx.img.com/a1.png',
    'http://xx.img.com/a2.png',
    'http://xx.img.com/a3.png'
]

//索引
console.log('第一张',igPhotos[0])
console.log('第二张',igPhotos[1])
console.log('第三张',igPhotos[2])



//物件 Object
const card = {
    name:'a',
    address:'b',
    age = 999
}

console.log('名字',card.name)  //物件的索引 '.'表示“的”

const post = {
    image:'https://xx.img.com/a1.png',
    desc:'这是一张图片',
    date:'2021/10/05',
    Comment: ['a','b']
}


const wall = [
    post,
    post2

]

console.log('wall',wall)//用阵列+物件组合排列出你想展示的内容

流程控制 if else \ switch case

//流程扩展 if else,switch case

// if (/* 条件 */) {
// //当条件成立要做的事情
// } else {
// // 当条件没有成立要做的事情
// }


if (100>50) {
    console.log('确实大于50')
} else {
    console.log('错误')
}

//(/* 条件 */) 帮我们转化成一个布林值
let condition = 100<50 // 100<50 && 100==50 、 100<50 || 100 == 50 、!100<50
console.log('condition',condition)

if (condition) {
    console.log('条件成立')
} else {
    console.log('条件不成立')
}


// +  -  *  /  算数运算子
// &&  ||  !  逻辑运算子  and or 反
//用()改变运算顺序

let score = 60

//连接if else
if (score >= 90) {
    console.log('优秀')//第一个条件成立做这里的事情
} else if (score >= 80) {
    console.log('良好')//第二个条件成立做这里的事情
} else if (score >= 60) {
    console.log('及格')//第三个条件成立做这里的事情
} else {
    console.log('不及格')
}


let key = 300
switch (key) {
    case 100:
        console.log('考了100分')
        break;
    case 200:
        console.log('考了200分')
        break;
    case 300:
        console.log('考了300分')
        break;
    default:
        console.log('没去考试')
        break;
}

回圈控制 for \ while

for 回圈

// i++  =>  i=i+1
for(let i = 0; i<10; i=i+1){  //用;隔开
    console.log('i:',i)
}

在这里插入图片描述

let classA = [100,70,59]
console.log(classA[0])
console.log(classA[1])
console.log(classA[2])

//等价于(自动化)
for (let i = 0; i < 3; i++) {  //当push一个新值时,把3改成classA.lenth,就不会有限制
    console.log('i:',classA[i])
    
}

//用for 修改陈列里的值
for (let i = 0; i < classA.length; i++) {
    if (i==2) {
        classA[i] = 999
    }
}

console.log('classA',classA)


// [物件1,物件2,······]
const posts = [
    {
        name:'赫林丁1',
        desc:'贴文1'
    },
    {
        name:'赫林丁2',
        desc:'贴文2'
    }
]
//用for可以index到物件的某一个位置把贴文抓出来
for (let i = 0; i < posts.length; i++) {
    if (i==1) {
        let post = posts[i]
        console.log(post)
    }
}


while 回圈
//当condition为true时永远会执行

condition = true
let target = 10
let i = 0

while (condition) {
    if (i == target) {
        condition = false
    }
    console.log(i)
    i++
}
//单纯计数用for回圈就行了

函数Function是什么

//宣告
function hello() {
    console.log('你好')
}


//执行
hello()

//有参数、有回传值(return)的function 
function addMoney(price1,price2,discount) {
    let result = price1 +price2 -discount
    let message = '普通会员'

    if (result>20000) {
        message = '白金会员'  //这里的message跟外面不会有冲突
    }

    if (result>50000) {
        message = '尊荣会员'  
    }
    
    return message
}

let total = addMoney(50000,50000,1000)
console.log('total',total)


//注意!!
function addMoney2(price1,price2,discount) {
    let result = price1 +price2 -discount
    let message = '普通会员'
    if (result>20000) {
        message = '白金会员'  //这里的message跟外面不会有冲突
        return message
    }
    
    if (result>50000) {
        message = '尊荣会员'  
        return message
    }

    return message
}

let total2 = addMoney2(50000,50000,1000)
console.log('total2',total2)

//如果白金会员在尊荣会员的下面,最后还会被改到白金会员,所以判断完就执行return


function addMoney4(price1,price2,discount) {
    let result = price1 +price2 -discount
    let message = '普通会员'
    if (result>50000) {
        message = '尊荣会员'  
        return message
    }
    if (result>20000) {
        message = '白金会员'  //这里的message跟外面不会有冲突
        return message
    }
    
    return message
}

let total4 = addMoney4(50000,50000,1000)
console.log('total4',total4)


//用if else连接也可以解决这个问题
function addMoney3(price1,price2,discount) {
    let result = price1 +price2 -discount
    let message = '普通会员'
    if (result>50000) {
        message = '尊荣会员'  
    } else if (result>20000) {
        message = '白金会员'  //这里的message跟外面不会有冲突
    }
    
    return message
}

let total3 = addMoney3(50000,50000,1000)
console.log('total3',total3)


//构造函数 function
//this表示:当下谁执行这个函数它就是谁
function createCard(initName) {
    this.cardName = initName
}

//new 建立or构造  构造一个新物件(进阶内容)······
const a1 = new createCard('小明')
console.log(a1)


//等价写法
function f() {}

//用宣告变数的方式宣告一个函数,功能基本一样但底层原理不一样,下面这种会报错(进阶内容,跟this有关)······
let f = function () {}

//简写方式
let f = () => {}

类别Class是什么

this:当下执行函数的人是谁,这个人就是这个函数的this

//class 的基本操作

// class Card {
//     constructor(initName) {
//         this.name = initName
//     }
// }

// const c1 = new Card("赫林丁")
// console.log('c1:',c1)
// console.log(c1.name)

//this

class Card {
    constructor(initName) {
        this.name = initName
        //把this绑定在Card上面
        this.helloooo = this.hello.bind(this)
    }

    hello () {
        console.log('hello',this.name)
    }
}

const c1 = new Card("赫林丁")
console.log('c1:',c1)
console.log(c1.name)
c1.hello()

const a = {name:'AA'}
a.helloooo = c1.hello
console.log(a.helloooo())

const b = {name:'BB'}
b.helloooo = c1.helloooo
b.helloooo()


// function Card(params) {
    
// }
// Card.prototype.hello = function (params) {
    
// }

//第二种绑定this的方法,hello用箭头函数
class Card2 {
    constructor(initName) {
        this.name = initName
    }

    hello = () => {
        console.log("hello",this.name)
    }
}

const c2 = new Card2('赫林丁')
console.log('c2',c2)
c2.hello

const a2 = {name:'AA'} //虽然name是AA 但还是被绑定在c2的name上
a2.helloooo = c2.hello
a2.helloooo()

//继承 extends
class Car {
    constructor(initName) {
        this.name = initName
    }
    start() {
        console.log('车子启动')
    }
}

class Porshe extends Car {
    constructor(namePoshe) {
        super(namePoshe)
    }

    start2() {
        super.start()
        console.log('车子排气')

    }
    // start覆盖  (子层可以盖过父层) 
    start() {
        console.log('Porshe车子启动')
        super.start()  //拉取父层的start
    }
}

const p1 = new Porshe('赫林丁的特斯拉')
p1.start2()
p1.start()
console.log('name',p1.name)

HTML DOM操作

程序由上往下执行,script要写在p标签后面(写在最下面),否则直接抓是抓不到的(p标签还没有被渲染出来文档就加载完了)

推荐学习网站:w3school.com
如:直接搜索 click w3 ——get写click事件有什么样的方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p id='title'>赫林丁前端学习之旅</p>
    <button id='btn'>按我</button>
    <div id='box'>box</div>

    <script src="./learn7.js"></script>
</body>
</html>
//设置一个监听器
//回呼  callback  ——网页执行入口 load完后执行function
window.addEventListener('load',function () {  //load 监听加载完成这一事件
    const p1 = document.getElementById('title')
    console.log(p1)
    p1.innerText = '订阅' //抓到p标签后可以做很多事情

    //在html新增一个button,想要给点反应该怎么办
    //先抓下来
    const b1 = document.getElementById('btn')

    b1.addEventListener('click',function () { //click监听按下去这一事件
        console.log('点下去')  //当我点下去后这个function就被执行了
    })  

    const box1 = document.getElementById('box')
    //改变box里html的结构
    box1.innerHTML = '<p>Test</p>'
})

改变了box内部的结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6u0Tob0q-1633426403634)(https://secure.wostatic.cn/static/wHNqMcV7mpiasFNbYAPj6P/image.png)]

监听使用者的输入

    <input id='input1' type="text">
    const in1 = document.getElementById('input1')
    in1.addEventListener('keyup',function (e) { //keyup表示键盘按下去弹起来
        console.log('e.target.value',e.target.value) //.target.value可以取得物件里面的内容(监听使用者输入的文字)
    })

备忘录小APP

const content = document.getElementById('content')
const date = document.getElementById('date')
const time = document.getElementById('time')
const addedBtn = document.getElementById('addedBtn')
const deletedBtn = document.getElementById('deletedBtn')
const list = document.getElementById('list')

//add
//用一个物件把所有content括起来
const listContent = []

//unshift&shift比push&pop更合理

addedBtn.addEventListener('click',function () {
    console.log(content.value)
    console.log(date.value)
    console.log(time.value)

    listContent.unshift({   //unshift从前面推东西进去,push从后面推
        content:content.value,
        date:date.value,
        time:time.value
    })


    //渲染页面的list
    let htmlStr = ''



    //forEach:Performs the specified action for each element in an array.
    listContent.forEach(function (item) {
        // console.log('item',item)
        //单引号没办法换行,用模板语法`` 来写字串  还可以直接把变数插入字串
        htmlStr = htmlStr + `
        <div class="item">
            <div>
                <p>内容:${item.content}</p>
                <p>时间:${item.date} ${item.time}</p>
            </div>
        </div>
        `
    })

    // console.log(htmlStr)

    list.innerHTML = htmlStr
})

//delete

deletedBtn.addEventListener('click',function () {
    listContent.shift() //shift与unshift相反 删除第一个,pop与push相反 删除最后一个

    //渲染页面的list
    let htmlStr = ''


    //forEach:Performs the specified action for each element in an array.
    listContent.forEach(function (item) {
        // console.log('item',item)
        //单引号没办法换行,用模板语法`` 来写字串  还可以直接把变数插入字串
        htmlStr = htmlStr + `
        <div class="item">
            <div>
                <p>内容:${item.content}</p>
                <p>时间:${item.date} ${item.time}</p>
            </div>
        </div>
        `
    })

    // console.log(htmlStr)

    list.innerHTML = htmlStr
})

用function后

const content = document.getElementById('content')
const date = document.getElementById('date')
const time = document.getElementById('time')
const addedBtn = document.getElementById('addedBtn')
const deletedBtn = document.getElementById('deletedBtn')
const list = document.getElementById('list')

//add
//用一个物件把所有content括起来
const listContent = []

//add\delete 复制一次物件增添删减的功能有点笨
//可以用function 定义渲染的逻辑 使得代码更简洁
function render() {
    //渲染页面的list
    let htmlStr = ''


    //forEach:Performs the specified action for each element in an array.
    listContent.forEach(function (item) {
        // console.log('item',item)
        //单引号没办法换行,用模板语法`` 来写字串  还可以直接把变数插入字串
        htmlStr = htmlStr + `
        <div class="item">
            <div>
                <p>内容:${item.content}</p>
                <p>时间:${item.date} ${item.time}</p>
            </div>
        </div>
        `
    })

    // console.log(htmlStr)

    list.innerHTML = htmlStr
}



//unshift&shift比push&pop更合理
addedBtn.addEventListener('click',function () {
    console.log(content.value)
    console.log(date.value)
    console.log(time.value)

    listContent.unshift({   //unshift从前面推东西进去,push从后面推
        content:content.value,
        date:date.value,
        time:time.value
    })


    render()
})

//delete

deletedBtn.addEventListener('click',function () {
    listContent.shift() //shift与unshift相反 删除第一个,pop与push相反 删除最后一个

    render()
})


用class对函数进行包装

//还可以用class
class RenderFeature{
    append() {

    }
    render() {
        //渲染页面的list
        let htmlStr = ''
        //forEach:Performs the specified action for each element in an array.
        listContent.forEach(function (item) {
            // console.log('item',item)
            //单引号没办法换行,用模板语法`` 来写字串  还可以直接把变数插入字串
            htmlStr = htmlStr + `
            <div class="item">
                <div>
                    <p>内容:${item.content}</p>
                    <p>时间:${item.date} ${item.time}</p>
                </div>
            </div>
            `
        })
        // console.log(htmlStr)
        list.innerHTML = htmlStr
    }
}

r1 = new RenderFeature()



//unshift&shift比push&pop更合理
addedBtn.addEventListener('click',function () {
    console.log(content.value)
    console.log(date.value)
    console.log(time.value)

    listContent.unshift({   //unshift从前面推东西进去,push从后面推
        content:content.value,
        date:date.value,
        time:time.value
    })


    r1.render()
})

//delete

deletedBtn.addEventListener('click',function () {
    listContent.shift() //shift与unshift相反 删除第一个,pop与push相反 删除最后一个

    r1.render()
})

进阶学习

  • Fetch API——怎样跟后端沟通

  • Promise、Async、Await、JS的非同步

  • JS的this

  • 原型链

  • ES6阵列操作

  • import export JS的模组化概念

  • 等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript是一种动态编程语言,主要用于在Web浏览器中创建动态效果和交互式用户界面。下面是一些快速入门的步骤: 1. 了解基础语法。JavaScript有自己的语法,包括变量声明、条件语句、循环语句、函数等。可以在网上找到许多JavaScript语法的教程和指南。 2. 编写第一个JavaScript程序。可以在HTML页面中添加<script>标签,然后在其中编写JavaScript代码。例如: ``` <script> alert("Hello, world!"); </script> ``` 这将在页面加载时显示一个警告框,其中包含“Hello, world!”文本。 3. 学习如何处理事件。JavaScript可以用来处理不同类型的事件,例如用户单击按钮或提交表单。可以使用addEventListener()函数来添加事件处理程序。例如: ``` <button id="myButton">Click me!</button> <script> var button = document.getElementById("myButton"); button.addEventListener("click", function() { alert("Button clicked!"); }); </script> ``` 这将在用户单击按钮时显示一个警告框,其中包含“Button clicked!”文本。 4. 学习如何操作HTML元素。JavaScript可以用来修改HTML元素的内容、样式和属性。例如: ``` <p id="myParagraph">This is a paragraph.</p> <script> var paragraph = document.getElementById("myParagraph"); paragraph.innerHTML = "This is a new paragraph."; paragraph.style.color = "red"; paragraph.setAttribute("title", "This is a tooltip."); </script> ``` 这将将段落元素的文本内容更改为“This is a new paragraph.”,将其文本颜色更改为红色,并添加一个工具提示。 以上就是JavaScript快速入门步骤。可以通过查找更多教程和示例来深入了解JavaScript的功能和用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值