美文网首页
JavaScript源码笔记(一)【爱创课堂专业前端培训】

JavaScript源码笔记(一)【爱创课堂专业前端培训】

作者: 爱创课堂 | 来源:发表于2019-08-23 17:53 被阅读0次

    一、前端页面三个组成部分

    HTML结构    CSS表现    JavaScript行为   

    二、什么是JS?

    由网景(NetScape)公司开发,前身叫做LiveScript;

    一门基于(面向)对象、面向客户端浏览器,事件驱动的脚本语言;

    轻量级但功能强大的(类)编程语言;

    可以用来 制作网页游戏 交互式操作 制作动画 等等

    JS之父 布兰登·艾奇  

    JS与JAVA异同点?  详见公众号

    三、JS三个组成部分

    ECMA核心API:JS基本语法、常量变量、运算符、流程语句、函数、对象

    BOM:Browser Object Model 浏览器对象模型  浏览器相关API

    DOM:Document Object Model 文档对象模型  文档操作的相关API

    四、JS位置的书写

    Javascript简称js。js代码书写在一对<script>标签对里面。标签有一个属性,type属性值是“text/javascript”,表示标签内部书写的是纯文本的Javascript代码。

    script标签可以写在页面的任何位置,我们初始学习的时候,习惯放在body标签里。

    js本身不能自己在浏览器加载,必须依托html载体来在浏览器中实现。

    面试题:JS代码写在body前和body后有什么区别?

    Title

    alert("head中添加js");

    alert("body前添加js");

    通过事件属性添加js代码

    alert("body后添加js");

    alert("body外添加js");

    五、JS语法

    一般情况下,从上往下顺序执行;

    每一条语句以分号结束;

    严格区分大小写

    忽略所有的换行与空格

    六、JS中注释

    // 单行注释

    /* 多行注释 */

    1 //弹出一个警告框

    2 alert(“hello JS”)

    3 /*

    4 需求:根据用户输入的数字,给出对应季节

    5 思路:1,

    6       2,

    7       3,

    8 */

    七、JS中数据输出方式

    7.1 通过警告框的方式弹出数据  

    alert(“Hello World!!”)  alert(122333)   alert(12.34)

    提示:字符串使用双引号或者单引号进行包裹

    // 通过警告框的方式输出信息

    //弹出字符换

    alert("Hello World!!!");

    // 弹出一个数字

    alert(122333);

    alert(12.34);

    //弹出一个布尔值,布尔值只有两种结果:true 和 false

    alert(true);

    7.2 通过浏览器控制台输出数据

    console.log(“Hello World!!”);  ==> Hello World

    console.log(3+3);  ==> 6

    console.log(4+”6”) ; ==> 46

    console.log(“6”-4); ==> 2

    7.3 向页面中输出数据

    直接向文档中写数据 document.write(“data”);

    Title

    document.write("这是通过document写出来的数据!!");

    向页面中写入数据

    点我document写数据

    document.write("这是通过document写出来的数据22222222222222222222222!!");

    向标签中写入数据 element.innerHTML  =  “data”

    Title

    点我向div中写入数据

    //获取btn按钮

    var btn = document.getElementById('btn');

    //获取div元素

    var content = document.getElementById('content');

    //给按钮添加点击事件

    btn.onclick = function () {

    //大括号中的代码块是我们点击按钮后执行的操作

    //执行操作:通过innerHTML向div元素中写入数据

    content.innerHTML = "通过innerHTML向div元素中写入数据";

    }

    八、常量

    常量,也叫字面量,在程序执行过程中不会发生改变的量

    常量可以直接输出

    九、变量

    9.1 变量概述

    在程序执行过程中可以发生改变的量;它是一个用来存储数据的容器。

    9.2 变量的声明

    var 变量名 = 初始化值;

    var 是JS中的关键字,用来声明变量

    变量名 用户自定义,命名规则见后面

    = 赋值运算符:将 = 右边的初始化值赋值给左边的变量

    初始化值 可以是一个常量 也可以是一个变量 还可以是一个表达式

    9.3 变量的命名规则

    由数字、字母、下划线以及美元符号$组成,数字不能开头

    不能是js中的关键字和保留字

    驼峰式命名:首字母小写,多个单词从第二个单词开始首字母大写 例如:getNumSum

    一般长度不会超过18位

    判断下面变量的命名是否符合规则,为什么?

    HelloWorld    $123   -num123   _123h$!我爱你 num   b23

    //使用var关键字来声明一个变量

    var a = 10;

    console.log("a:",a);

    var HelloWorld = "JavaScript";

    console.log("Hello World:",HelloWorld);

    var $123 = true;

    console.log("$123:",$123);

    // var -num123 = 123;

    // console.log("-num123:",-num123);//Uncaught SyntaxError: Unexpected token -

    var 我爱你 = "中国";

    console.log("我爱你,",我爱你);

    var c = 10;

    var b = 20;

    var sum = b + c + 10;

    console.log("b:",b,"sum:",sum);//==> 40

    //变量不需要多次声明

    b = 40;

    console.log("b:",b,"sum:",sum);//==>40

    var num1 = 100,

    num2 = 200,

    sum2 = num1 + num2;

    console.log("num1:",num1,"num2:",num2,"sum2:",sum2); // ==> num1: 100 num2: 200 sum2: 300

    输出结果:

    1 a: 10

    2 Hello World: JavaScript

    3 $123: true

    4 我爱你, 中国

    5 b: 20 sum: 40

    6 b: 40 sum: 40

    7 num1: 100 num2: 200 sum2: 300

    9.4 变量的调用

    如上代码,直接调用变量名

    注意:此处等号 “=”不是等于的意思,是赋值的意思

    9.5 变量的提升

    浏览器中存在两种引擎:渲染引擎 和 JS引擎

    JS引擎解析JS代码分成两步:

    预解析阶段,会将所有变量的声明提升到当前作用域的最顶部,率先执行;

    运行阶段,根据顺序依次赋值和运行代码

    console.log(num);

    运行结果:

    1 Uncaught ReferenceError: num is not defined  变量没有被声明

    console.log(num);

    var num = 20;

    运行结果:undefined变量被声明,但是没有被定义或叫没有被赋值

    //上面执行的过程类似于下面

    var num; //预解析阶段,所有的声明提升到当前作用域的最顶部

    console.log(num);//undefined

    num = 20;//赋值

    console.log(num);//20

    结果:

    undefined

    20

    通过上面告诉我们,变量一定要先定义,再使用,不然获取不到正确值

    十、数据类型的分类

    10.1 基本数据类型

    Number数值类型: 如 10  20  12.34  Infinity(无限大)  NaN(Not a Number)不是一个数字

    String字符串类型: 由单引号或者双引号进行包裹的文本  例如:”Hello”  “23”

    Boolean布尔类型:只有两个值 true 和 false

    Null 空值,空指针对象

    Undefined 未被定义的:变量被声明,但是没有被赋值

    ES5中提出的概念,衍生自Null,但是又不同于Null

    10.2 引用数据类型

    Object

    Function

    10.3 判断变量的数据类型 typeof 操作符

    语法格式

    typeof 变量或常量

    typeof(变量或常量)

    //基本数据类型

    //Number数值类型

    var num = 10;

    console.log("num =",num)

    //判断变量的数据类型:typeof  变量  || typeof(变量)

    console.log(typeof num); //==> number

    console.log(typeof("Hello"));// ==> string

    var num2 = 10.23;

    console.log("num2数据类型为:",typeof num2);

    var num3 = num2 / 0;

    //var num3 = -num2 / 0;

    console.log("num3:",num3,",数据类型:",typeof num3);

    var num4 = 4/"Hello";

    console.log("num4:",num4,",数据类型:",typeof(num4));

    console.log(NaN + 12);

    console.log(NaN + "13");

    console.log(12 + NaN);

    console.log("12" + NaN);

    console.log("12" - NaN);

    console.log(12 - NaN);

    console.log(typeof NaN);//==>number

    console.log(NaN == NaN);//==>false

    结果:

    num = 10

    number

    string

    数据类型为: number

    Infinity ,数据类型: number

    NaN ,数据类型: number

    NaN

    NaN13

    NaN

    12NaN

    NaN

    NaN

    number

    false

    //字符串类型String

    var str = "34";

    console.log("str:",str,"数据类型:",typeof str);//==>str: 34 数据类型: string

    console.log(typeof "true");//==> string

    console.log(typeof "hello123");//==> string

    //Boolean布尔类型

    console.log(true,"数据类型:",typeof true);

    console.log(false,"数据类型:",typeof false);

    console.log(10 === 10);

    输出结果:

    true "数据类型:" "boolean"

    false "数据类型:" "boolean"

    true

    Title

    //获取btn元素

    var btn = document.getElementById('btn');

    //打印btn

    console.log(btn,"数据类型:",typeof btn);//==> null "数据类型:" "object"

    点我

    //获取btn元素

    var btn = document.getElementById('btn');

    //打印btn

    console.log(btn);//=>点我

    var a;

    console.log("a:",a,"数据类型:",typeof a);//==>a: undefined 数据类型: undefined

    console.log(null == undefined);//true   此处"=="判断值是否相同,忽略数据类型

    console.log(null === undefined);//false  此处"==="判断值和类型是否相同

    十一、基本数据类型转换

    11.1 隐式转换

    借助运算符 

    var a = 10,

    b= "20",

    c = "Hello",

    d = true,

    e = 30;

    //这里,有一个字符串,通过 + 完成字符串拼接,隐式转换

    console.log("a+b = ",a+b,"数据类型:",typeof(a+b));// ==> a+b =  1020 数据类型: string

    console.log("a+c+d=",a+c+d,"数据类型:",typeof(a+c+d)); //==> a+c+d= 10Hellotrue 数据类型: string

    console.log("a+c+e=",a+c+e);//==>10Hello30

    console.log("a+e+c=",a+e+c);//==>40Hello

    console.log("c+a+e=",c+a+e);//==>Hello1030

    //当数值 和 布尔进行数学运算时,true 默认转为数值1进行运算  false 默认转为数值 0 进行运算

    console.log("d+e=",d+e,"数据类型:",typeof(d+e));//==> d+e= 31 数据类型: number

    console.log(false + 10);//==>10

    console.log(false true,"===",typeof(true+false));//==> 1 "===" "number"

    //这里,使用 - * 、 %,如果字符串为数字字符串,会自动转换成数值类型进行数学运算

    console.log("a-b = ",a-b,"数据类型:",typeof(a-b));// ==> -a-b =  -10 数据类型: number

    console.log("a-c=",a-c,"数据类型:",typeof(a-c));// ==> a-c= NaN 数据类型: number

    console.log("a*c=",a*c,"数据类型:",typeof(a*c));// ==> a*c= NaN 数据类型: number

    console.log(e-d);// ==> 29

    11.2 显式转换

    借助全局的方法:toString()   parseInt()   parseFloat()

    var a = 10,

    b = 10.23,

    c = "20",

    d = "Hello",

    e = true,

    f = false;

    console.log("a:",a,",数据类型:",typeof a,"==b:",b,",数据类型:",typeof b,"===c",c,",数据类型:",typeof c,"===d",d,",数据类型:",typeof d,"===e",e,",数据类型:",typeof e,"===f",f,",数据类型:",typeof f)

    //通过toString()方法将其他数据类型转换成字符串类型

    var g = a.toString();

    console.log("g:",g,typeof g);//=>g: 10 string

    var h = e.toString();

    console.log("h:",h,typeof h);//=>h: true string

    //通过parseInt()  parseFloat()将其他数据类型转换成整数或者浮点数类型

    var i = parseInt(c);

    console.log("i:",i,typeof i);//==>i: 20 number

    var j = parseInt(d);

    console.log("j",j,typeof j);//==> j NaN number

    var k = parseFloat(e);

    console.log("k",k,typeof k);//==> k NaN number

    使用包装类: String()  Number()  Boolean()

    //通过包装类来进行转换

    //String() 将其他数据类型转换成字符串类型

    var l = String(b);

    console.log("l",l,typeof l);//==> l 10.23 string

    var m = String(f);

    console.log("m",m,typeof m);//==> m false string

    //Number() )将其他数据类型转换成数值类型

    var n = Number(c);

    console.log("n",n,typeof n);//==> n 20 number

    var o = Number(d);

    console.log("o",o,typeof o);//==> o NaN number

    var p = Number(f);

    console.log("p",p,typeof p);//==> p 0 number

    //Boolean() 将其他数据类型转换成布尔类型

    var q = Boolean(b);

    console.log("q",q,typeof q);//==>q true boolean

    var r = Boolean(c);

    console.log("r",r,typeof r);//==>r true boolean

    var s = Boolean(d);

    console.log("s",s,typeof s);//==>s true boolean

    var t = Boolean(null);

    console.log("null:",t,typeof t);// ==>null: false boolean

    var u = Boolean(undefined);

    console.log("undefined:",u,typeof u);//==>undefined: false boolean

    var v = Boolean(0);

    console.log("0:",v,typeof v);//==>0: false boolean

    var w = Boolean(1);

    console.log("1:",w,typeof w);//==>1: true boolean

    十二、算术运算符

    用来执行数学运算

    +    -    *    /    %(取模,取余)  ++(自增)   --(自减)

    关注VX公众号“icketang” 免费领取华为荣耀商城项目实战视频教程

    相关文章

      网友评论

          本文标题:JavaScript源码笔记(一)【爱创课堂专业前端培训】

          本文链接:https://www.haomeiwen.com/subject/vuntectx.html