javaScript的历史:
引用:“JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。”
JavaScript与ECMAScript的关系:
ECMAScript是JavaScript的标准,JavaScript是ES的实现和扩展,在日常生活中这两个词是可以交换的。
JS是什么?
js是一种嵌入到HTML页面中的编程语言,是一种脚本语言,在浏览器中一边解析一边运行,不能够单独的运行。
JS的注释:
- 单行注释 //
- 多行注释 /* */
//var a = 1; //是单行注释的意思
/* var b = 1;
var c = 1;
var d = 1;
*/
/*内容*/ //是多行注释的意思
JS的引入方式:
- 外部引入:
<script src="" type="text/javascript" charset="utf-8"></script>
//""引号里面填js的路径
//我们尽可能的把外部的js文件放在页面的最底部,
//因为js可能在DOM操作的时候会找不到元素进行报错。
- 内部js:
<script type="text/javascript">
//代码块。
//在HTML使用<script>标签使用js
</script>
元素事件JS
<button type="button" onclick="alert('hello world')">点击</button>
输出方式:
- console.log() ------------控制台输出。
- alert() ------------页面弹窗提示。全称window.alert()
- console.dir() ------------ 可以在控制台查看原始属性
- console.table() ------------ 可以在控制台输出成表格
- document.write() ------------写入HTML输出
- document.writeln() ------------换行输出
- innerHTML ------------ 可以设置或获取文本内容和标签
- innerText ------------可以设置和获取文本内容
JS变量:
在JS中,变量的值是一个可以改变的量,也就是说变量的值在程序的运行中是可以改变的。
变量的声明方式:var。
变量的命名:命名不能使用JavaScript中的关键字、保留字;
常用的一些关键字和保留字:var,null,this,true,false,try,if,for,array,object,void,default,case,break,in,class,float,long,int等;
var myName; //声明了一个变量叫做myName;
var _name;
var $name;
var $_name123;
变量的使用:
var 变量名 = 值 ; 等于符号表示的赋值
用一个var 来声明多个变量,每个变量之间用逗号(,)隔开。
var a = 10;
//将10赋值给变量a a表示变量名,
//=等于符号表示赋值符,
//10表示赋值。
//分号;表示结束
var b,c,d,e,f;
PS:声明提前(变量提前)
JavaScript编译器会把变量声明看作两个;
- 声明操作
- 赋值操作
var a = 10; //其实是下面这些
var a; //先声明a这个变量 声明操作
a = 10; //然后在赋值给a=10; 赋值操作
常量:const
常量值是一个不能改变的量,也就是说const的值从一开始就固定了,一直到程序运行结束都不允许改变。
const a = 1; //const 常量名 = 值;
数据类型:
基本数据类型:只能有一个值
- 数值(number):数字在js中是最基本的数据类型,所谓的数字就是我们数学上使用的数字,js的数字是不区分int(整型),float(浮点型)的。js中只有float用作与计算,所有的数字在js中都是float,数字类型在控制台中一般是蓝色的。
var a = "123";
var b = '123';
var c = "abc";
- 布尔值(Boolean):布尔值只有两个结果 true (真)=1; false(假)=0;
- 未定义(undefined):如果我们声明了一个变量但是我们没有对这个变量进行赋值,那么这个变量就是undefined。那种情况下会产生未定义?1、变量声明未赋值,值为undefined,2、变量直接赋值undefined。3、函数没有返回值、4、函数参数为传入实际值,参数值为undefined.5、对象属性定义未赋值,对象属性值为undefined。
- 空值(null):null是一个对象,字符串和数字等数据类型在定义的时候,系统会分配一定的空间内容,但是null 不好,表示系统没有给这个变量分配空间。
- symbol:Symbol本质上是一种唯一的标识符,可以用作对象的唯一属性名,这样其他人就不会改写或者覆写你设置的属性值。(ps:这个是es6里面的)
- 对象 (object)
- 函数 (function)
引用数据类型
可以包含多个值
- 数组(Array)
- 对象(Object)
- 函数(function)
获取数据类型:
var a = 10;
var b = "abc";
var c =[1,2,3];
var d = true;
var e;
var f = null;
console.log(typeof(a))
console.log(typeof(b))
console.log(typeof(c)) //typeof(变量 名)
console.log(typeof d)
console.log(typeof e)
console.log(typeof f) //typeof 变量名
扩展:
js最初是32位系统,0表示对象000;null被typeof输出object严格意义上是不正确的,但是这只是JS存在的历史悠久BUG.在JS的最初版本中使用的是32位系统,为了性能考虑,使用低频存储变量的类型信息,000
开头表示对象,然而null
表示为全零,所以他错误的判断为Object
.虽然现在内部类型判断代码已经改变了,但是这个bug却一直流传了下来。 PS2:原始类型存储的值是没有函数可以调用的,例如undefind.toString()
运算符:
- 算数运算符:+(加)-(减)*(乘)/(除)%(取模/求余)++(自增)--(自减)i++表示在原来的值得基础上+1,指的是使用i之后再让i的值+1;++i表示在原来的指的基础上+1,在使用i之前先让i加1;自增和自减同理。
- 赋值运算符:
- =(赋值符):var a = 1;
- += :var a += b; 等价于var a = a+b;
- -=:var a -= b; 等价于 var a = a-b;
- *=:var a *=b;等价于 var a = a*b;
- /= :var a /=b;等价于 var a = a/b;
3. 比较运算符:
- >(2>1 return true)
- <(2<1 return false)
- >=(2>=1 return true)
- <=(2<=1 return false)
- ==(2==2 return true)(1=="1" return true)这个是不严格的相等(不用判断数据类型)
- ===(2===2 return true) (1==="1" return false)这个是严格的相等(需要判断数据类型)
- != (2!=1 return true)(2!="2" return false)不严格的不相等
- !==(2!==2 return false)(2!=="2" return true)严格的不相等
4. 逻辑运算符:
- &&与(并且) (真&&真 = 真 真&&假 = 假 假&&假 = 假 假&&真 = 假)
- | | 或(或者) (真||真 = 真 真||假 = 真 假||假 = 假 假||真 = 真)
- !非(取反) (!真 = 假 !假 = 真)
5.条件运算符(三目运算符)
- ?(条件运算符)
- 单条件:var a = 条件? 表达式1:表达式2;表达式1在条件为true的时候触发,表达式2在条件为false的时候触发。
- 多条件:var a = 条件1? 表达式1:条件2?表达式2:条件3?表达式3:表达式4;(当条件1为true的时候触发表达式1,否则触发条件2,当条件2为true的时候触发表达式2,否则触发条件3,当条件3为true的时候触发表达式3,否则触发表达式4
数据类型的转换:
- 数据类型的转换指的将一种数据类型,转换成另一种数据类型。
- 为什么我们需要数据类型的转换?(比如:input的value的值都是string,但是我们有时候需要做计算,那么我们就需要把string转换成number)
- JavaScript一共有两种类型转换:
- 隐式类型转换:只要是字符串和数字相加永远都是数字类型转成字符串类型。但一个数字类型除开相加其他的都会将字符串类型转换成数字类型。undefined不能转换成任何东西,null可以转换成数字0,true转成1,false转成0;NaN表示这不是一个数字
- 强制(显式)类型转换:
- Number()把任意值转换成数字,如果转换的一个字符串中包含不是数字的字符则返回NaN
- toString()toString不能强制转换null和undefined。讲任意值转换成字符串类型。
- String()将任意值转换成字符串类型。
- parseInt()把一个字符串里面的数值转换成整型,一开始如果是字母则转换成NaN,中间出现字母则转换前面是数字的一段。
- parseFloat()把一个字符串里面的数值转换成浮点型,开头不能是字母,否则NaN。
- Boolean()把一个数转换成布尔值(0,null,空字符串,undefined,NaN都会转换成False,其他的都是true)