JS学习之路(每日总结)

107 阅读7分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

web发展史

Mosaic,是互联网历史上第一个获普遍使用和能够显示图片的网页浏览器。于1993年问世。

1994年11月,Mosaic浏览器的开发人员创建了网景公司(Netscape Communications Corp.),并发布了Mosaic Netscape 1.0 beta浏览器,后改名为Navigator

js历史

JavaScript作为Netscape Navigator浏览器的一部分首次出现在1996年。它最初的设计目标是改善网页的用户体验。期初JavaScript被命名为LiveScript,后来为了借助Java语言创造良好的营销效果最终改名JavaScript

浏览器组成

  1. shell部分

  2. 内核部分

    渲染引擎(语法规则和渲染)、js引擎、其他模块

js的特色

解释性语言

扩展:(必须了解)

编译: c、c++ ------------------------- 解释: javascript、php

优点:快 --------------------------------优点:跨平台(不需要编译成文件)

不足:移植性不好(不跨平台)--------不足:稍微慢

单线程(js引擎)

同步:一步一步执行

异步:同时执行

ECMA标注

ECMAScript

js三大部分

ECMAScript、DOM、BOM

几大主流浏览器及其内核:(专业知识,必须记住)

IE trident

Chrome webkit/blink

firefox Gecko

Opera presto

Safari webkit

如何引入js?

  1. 页面级js

    <script type="text/javascript">
        document.write('hi');
    </script>
    
  2. 外部引入js

    <scrip type="text/javascript" src="lesson.js"></script>
    

为符合web标准(w3c标准中的一种)结构、样式、行为相分离,通常采用外部引入。

js基本语法

变量 var a=100;//声明的同时赋值

命名规则

  1. 变量名必须以英文字母、 _ 、$ 开头,不能以数字开头
  2. 变量名可以包括英文字母、_、$、数字
  3. 不可以用系统的关键字、保留字作为变量名
  4. 严格区分大小写
  5. 变量名必须有意义(最好采用英文)
  6. 驼峰命名法 如 myFirstName

我们尽量不要直接使用name 作为变量名(name在浏览器中有特殊的含义的)

关键字:有特殊语法含义的

保留字:未来可能会使用到的

值类型——数据类型

原始值(不可改变的原始值)

Number String Boolean underfined null

引用值

array Object function ...date RegExp

var arr = [1,2,3,4,5,false,"abc"];

js语句基本规则:

语句后要用分号结束“;”

js语法错误会引发后续代码终止,但不会影响其它js代码块

书写格式要规范,“= + / -”两边都应该有空格

// var name = prompt('请输入你的昵称');
// alert(name);

//1.更新变量
var myname = 'joy';
console.log(myname);
myname = 'mike';
console.log(myname);
//2.声明多个变量
var age = 18,
address = '地球';
gz = 2000;
//3.只声明,不赋值 结果是?
var sex;
console.log(sex);//undefined
//不声明 不赋值 直接使用某个变量会报错
console.log(tel);
//不声明 直接赋值使用可以执行
qq =110;
   console.log(qq);

一个变量被重新赋值后,原有的值会被覆盖,变量值将以最后一次赋的值为准。

数据类型简介

引入:为什么需要数据类型?

不同的数据所占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是就定义了不同的数据类型。

- 数字型 Number

js数字类型既可以用来保存整数值,也可以用来保存小数(浮点数)。

数字型范围:

var num;
//这里的 num 我们是不确定属于哪种数据类型的
//js 的变量数据类型是只有在程序运行过程中,根据等号右边的值来确定的
//js 是动态语言 变量的数据类型是可以变化的
var x = 10;//x 是数字型
x = 'joy';//x 是字符型//1.八进制 0~7 我们程序里面数字前面加0 表示八进制
var num1 = 010;
console.log(num1);//010 转换为十进制就是 8
//2.十六进制 0~9 a~f    #ffffff 数字的前面加 0x 表示十六进制
var num3 = 0x9;
console.log(num3);
var num4 = 0xa;//代表十进制 9
console.log(num4);//转换为十进制就是 10
//3.数字型的最大值
alert(Number.MAX_VALUE);//1.7976931348623157e+308
//4.数字型的最小值
alert(Number.MIN_VALUE);//5e-324
//5.无穷大
alert(Number.MAX_VALUE * 2);//Infinity
//6.无穷小
alert(-Number.MIN_VALUE * 2);//-Infinity
//7.非数字
console.log('joy'-100);//NaN

- 字符串型 String

可以是引号中的任意文本,其语法为双引号 "" 和单引号 " 推荐使用单引号

//isNaN() 这个方法来判断非数字 并且返回一个值 如果是数字返回的是 false 如果不是数字返回 的是 true
console.log(isNaN(12));//false
//字符串引号嵌套 可以外双内单 或 外单内双
var str = '我是一个"高富帅"的程序员';
console.log(str);
//字符串转义字符 都是 \ 开头  但是这些转义字符需要写在引号里面
var str = '我是一个"高富帅"的\n程序员';
console.log(str);

字符串长度

//1.检测获取字符串的长度 legth
var str = 'wo shi shui';
console.log(str.length);//11
//2.字符串的拼接 +    字符串 + 任何类型 = 拼接之后的新字符串
console.log('沙漠' + '骆驼');// 字符串的 沙漠骆驼
console.log('joy' + 18);// 'joy18'
console.log('joy' + true);// joytrue
console.log(12+12);//24
console.log('12' + 12);//'1212'

var age = 18;
//变量不要写到字符串里面,是通过和 字符串相连的方式实现的
//口诀:引引加加
console.log('joy' + age + '岁');//joy18岁

//弹出一个输入框(prompt),让用户输入年龄(用户输入)
//把用户输入的值用变量保存起来,把刚才输入的年龄与所要输出的字符串拼接(程序内部处理)
//使用 alert 语句弹出警示框(输出结果)
var age = prompt('请输入您的年龄:');
var str = '您今年' + age + '岁了';
alert(str);

- 布尔型

var flag = true;//flag 布尔型
var flag1 = false;//flag1 布尔型
console.log(flag + 1);//2   true 参与加法运算当1来看
console.log(flag1 + 1);//1  false 参与加法运算当0来看
//如果一个变量声明未赋值 就是 undefined 未定义数据类型
var str;
console.log(str);
var variable = undefined;
console.log(variable + 'joy');//undefinedjoy
console.log(variable + 1);//NaN undefined 和数字相加最后的结果是 NaN
//null 空值
var space = null;
console.log(space + 'joy');//nulljoy
console.log(space + 1);//1
//typeof 可以判断变量是什么数据类型
var num = 10;
console.log(typeof(num));//number
var str = 'joy';
console.log(typeof str);//string
var flag = true;
console.log(typeof flag);//boolean
var vari = undefined;
console.log(vari);//undefined
var timer = null;
console.log(typeof timer);//object
//prompt 取过来的值是 字符型的
var age = prompt('请输入您的年龄');
console.log(age);
console.log(typeof age);

数据类型的转换:

  • 转换为字符串类型

    加号拼接字符串(重点掌握)

//1.把数字型转换成字符串型 toString()
var num = 10;
var str = num.toString();
console.log(str);
console.log(typeof str);
//2.我们利用 String()
console.log(String(num));
//3.利用 + 拼接字符串的方法实现转换效果 (隐式转换)
console.log(num + '');
  • 转换为数字型 前两种方法重点掌握
var age = prompt('请输入您的年龄');
//1. parseInt(变量)  可以把字符型的转换为数字型  得到的是整数
console.log(parseInt(age));
console.log(parseInt('3.94'));// 3 取整
console.log(parseInt('120px'));//120 会去掉这个px单位
console.log(parseInt('rem120px'));// NaN
//2. parseFloat(变量) 可以把 字符型的转换为数字型 得到的是小数 浮点数
console.log(parseFloat('3.94'));// 3.14
console.log(parseFloat('120px'));// 120 会去掉这个px单位
console.log(parseFloat('rem120px'));// NaN
//3. 利用Number(变量) 
var str = '123';
console.log(Number(str));// 123
console.log(Number('12'));// 12
//4. 利用了算数运算 - * / 隐式转换
console.log('12' - 0);// 12
console.log('123' - '120');// 3
//案例1:
//弹出一个输入框(prompt),让用户输入出生年份(用户输入)
//把用户输入的值用变量保存起来,然后用今年的年份减去变量值,结果就是现在的年龄
//弹出警示框(alert),把计算的结果输出(输出结果)
var year = prompt('请输入您的出生年份');
var age = 2021 - year;//year 取过来的是字符串型 但是这里用的减法 有隐式转换
alert('您今年' + age + '岁了');
//案例2:
//计算两个数的值,用户输入第一个值后,继续弹出第二个输入框并输入第二个值,最后通过弹出窗口显示出两次输入值相加的结果
var num1 = prompt('请输入第一个数');
var num2 = prompt('请输入第二个数');
var result = parseFloat(num1) + parseFloat(num2);
alert('结果是:' + result);
  • 转换为布尔型 Boolean() 函数

代表 空、否定的值 否定的值会被转换成 false,如 ''、0、NaN、null、undefined 其余值都会被转换成true

案例:

var name = prompt('请输入您的姓名');
var age = prompt('请输入您的年龄');
var sex = prompt('请输入您的性别');
alert('您的姓名是:' + name +'\n您的年龄是:'+ Number(age) +'\n您的性别是:' + sex);

解释型语言和编译型语言

02.PNG