插入js

在html页面使用js

引用js文件

注释

// 单行注释

/* 多行注释

*/

变量

var home // 声明一个变量使用var

home = “hallo” // 使用=来把字符串hallo赋值到home变量

变量命名要求: 必须以字母、下划线或美元符号开头,后面可以跟字母、下划线、美元符号和数字

建议每一行语句结束使用;来表示结束当前语句,主要是给人看

var num = 123 // 整数

num = “123” // 字符串

num = 1.23 // 浮点数(小数)

num = true // 布尔值(真,假或者对,错的意思,true是真,false为假)

num = 1+1 // 可以进行运算,也可以连接两个字符串

num = “hallo” + “javascript”

var nums = 1

nums++ // 和nums = nums+1意思是一样,所以这个时候nums = 1+1 =2

nums– // 和nums = nums-1意思是一样,所以这个时候nums = 1-1 = 0

< 小于 > 大于 <= 小于或者等于 >= 大于或者等于 == 没错,这个才是等于,=这个是用来赋值的 != 不等于

比较的结果一定是布尔值,要么true。要么false

&& 和,与的意思,必须是两个条件都符合,才会返回true,否则返回false

|| 或者的意思,只要符合其中的一个条件就返回true,否则返回false

num = 1

a = !(num>2)

//这个返回true,因为num不大于2,所以是false,但是!()可以把真看成假,把假看成真

操作符之间的优先级(高到低):

算术操作符 → 比较操作符 → 逻辑操作符 → “=“赋值符号

同级的运算是按从左到右次序进行,多层括号由里向外。

num = 1

num = numa + 1 > 2 && numa * 2 < 2

// (numa +1)>2 (numa *2) <2 所以num 的值为false

var array = new Array() // 定义数值

array[0] = “hi” array[1] = ‘hallo’

数值从0开始,数值是值的整合,每一个数值的值都有一个索引号

array = new Array(5) //定义数值,创建8个值

创建的新数组是空数组,没有值,输出会显示undefined

array = new Array(1,2,3,4,5,6) // 定义数组,同时赋值

array = new Array[1,2,3,4,5,6] // 定义数组,同时直接输入个数组

array[99] = 66 //使用一个新的索引,为数值添加一个新的元素

document.write(array[1]) //输出array数组,索引号为1的值

array.length = 6 // 获取数组array的长度,并且修改数值的长度

alert(array.length) // 输出6

var Array = [[0,1],[2,3]] // 定义一个二维数组

array[0][1] = 5 // 把第0行的第1列的元素赋值为5

if(条件){
    程序块
}

条件必须为true(真)时才会执行程序块,为假(false)时忽略跳过或者执行else的内容,又或者执行else if的内容

会被认为是false(假)的有:false,0,“”,NaN,null,undefined

return //终止

var code = 'hallo'

if (code == 'hallo'){
document.write('hallo')
}else if(code == 'no'){
    document.write('no')
}else{
    document.write('go')
}




switch(变量){
    case值: 
         	// 当等于或者符合某个值时,执行case下的程序块
    break

    default:
    // 当都不等于或者不符合上面给出的某个值时,执行default下的程序块,就比如if的else一样
    break
}



code = 3
switch(code){
    case 1:
    document.write('1')
    break
    case 2:
    document.write('2')
    break
    case 3:
    document.write('3')
    break

    default:
    break
}

for(初始值;条件;更改初始值){
    // 必须条件符合才执行程序块,当条件不符合时,跳出for循环
}


for(code=1;code<=3;code++){
    document.write(code)
}



while(条件){
    // 当条件为真时,执行该程序块,如果条件一直为真时,会一直执行下去,所以一定要保证条件结果可能为假
}


while (code <= 10){
    document.write('code')
    code++
}



code = 1
do{
    document.write(code)

    code++
}

while (code <= 5)





for (code = 1;code<=10;code++){

    if(code == 2){
        continue
    }

    if(code == 3){
        break
    }


    document.write(code)
}



function 函数名(传参,不强制必须要传参){
    // 当执行该函数时,执行程序块
}

函数名(传参,不强制必须要传参)//触发函数

在函数内部定义的变量,只作用于该函数内部,并不影响函数外部定义的变量

在函数内部定义的变量就叫局部变量,在函数外部定义的变量叫全局变量

在函数内部可以获取函数外部的变量,在函数外部,不能获取到函数外部的变量

注意的是:只作用于该函数内部,不影响其他函数内部

;(functiom(){
    //....


    // 为了避免污染全局变量,可以使用这种方法
})()






function code(a,b){
    num = a+b
    alert(num)
    return num
}

code(1,2)

事件

onclick是鼠标点击事件,当点击鼠标时,执行被调用程序块

onmouseover是鼠标经过事件,当鼠标移到一个对象上,就触发onmouseover事件,并执行被调用的程序块

onmouseout是鼠标移开事件,当鼠标移开当前对象时,触发该事件,并执行被调用程序块

onfocus是光标聚焦事件,例如光标移到文本框内时,就是焦点在文本框内上,触发该事件,并执行被调用程序块

onblur是失焦事件,和光标聚焦事件相反

onselect是内容选中事件,当文本框或者文本域中的文字被选中时触发该事件,并执行被调用程序块

onchange是文本框内容改变事件,当通过修改例如文本框的内容时触发该事件,并执行被调用程序块

onload是加载事件,当页面加载完成后触发该事件,并执行被调用程序块

onunload是卸载事件,当退出页面或者页面刷新等等操作时触发该事件,并执行被调用程序块

对象

var name = new Array() // 定义个数组对象

name.length // 使用array对象的length属性来获取数组的长度,这是获取到对象的属性的例子

Date 对象

var go_date = new Date(); // 假如是2012年1月2日

document.write(go_date); // 输出go_date的值,不同浏览器,时间格式有差异

getFullYear(); // 返回年份时间

setFullYear(); // 设置年份时间

document.write(go_date.getFullYear()); //输出go_date的年份,输出2012

go_date.setFullYear(2022); // 设置go_date的年份,go_date的年份已经设置为2022

document.write(go_date.getFullYear()); // 这个时候输出go_date的年份,输出结果为2022

getDay(); // 返回星期,0到6的整数,0表示星期天

document.write(go_date.getDay()) // 输出数字,可以通过数组来返回相对于的星期

getTime(); // 返回时间,单位毫秒,返回 1970 年 1 月 1 日至今的毫秒数 setTime(); // 设置时间

length返回字符串长度 var str_01 = “hello JavaScript”; var str_02 = str_01.length;

toUpperCase()把字符串小写字母转换为大写字母 var str_03 = str_01.toUpperCase();

charAt()返回指定位置的字符串 document.write(str_01.charAt(0));

indexOf()返回指定字符串中首次出现的位置

document.write(str_01.indexOf(‘h’);

windows对象

alert(); // 弹窗,只能确定

confirm(); // 弹窗,可以确定,也可以取消,返回是布尔值

prompt(); // 弹窗,可以输入内容(传入内容)

setTimeout(函数,时间); // 定时器,时间是毫秒,1000毫秒=1秒,当时间到了就触发函数,只会触发一次

setInterval(函数,时间); // 每一到指定的时间就触发一次函数,可以触发n次

clearInterval(清除定时器);

DOM

document.getElementById(); // id选择器 document.getElementsByTagName(); // 标签选择器 document.getElementsByClassName(); // 类名选择器

document.createElement(); // 创建dom document.body.appendChild();

addEventListener(); //添加点击事件

innerText(); // 添加文本


ES6模块化

export语法

export default默认导出

export abc需要使用import { abc } form ‘./test.js’的方式导入

babel编译功能

npm install –save-dev babel-core babel-preset-es2015 babel-preset-latest

npm install –global babel-cli

.babelrc文件

{
    'presets': ['es2015','latest'],
    'plugins': []
}

webpack

npm install webpack babel-loader –save-dev

webpack.config.js配置文件

rollup打包工具

npm install rollup rollup-plugin-node-resolve rollup-plugin-babel babel-plugin-external-helpers babel-preset-latest babel-core –save-dev

rollup.config.js配置文件

import babel form 'rollup-plugin-babel'
import resolve form 'rollup-plugin-node-resolve'
export default{
    entry: 'src/index.js',
    format: 'umd',
    plugins: [
        resolve(),
        babel({
            exclud: 'node_modules/**'
        })
    ],
    dest: 'build/bundle.js'
}

rollup -c rollup.config.js

AMD模块化标准,nodejs模块化标准(CommonJS),ES6模块化标准,兼容模块化UMD

class实质上是构造函数的语法糖,构建器constructor就是构造函数,不过class的方法是在类内部创建的,而构造函数是通过扩展原型的方式(prototype),让实例具备该方法

构造函数等于构造函数的原型的构造器(prototype.constructor)

实例.__proto__等于构造函数的原型

构造函数继承(同时也是class继承的原理)

Abc.prototype = new Xyz()

这样Abc构造函数就可以继承Xyz构造函数的属性和方法

promise


原型

异步

虚拟DOM

MVVM

组件化

hybrid