js的概述:
- js是基于对象的一门语言,一门独立的语言,独立起来的语言结构,没有其他语言的输入等关联
- 脚本语言,没有编译过程,解释执行,程序写完之后直接被浏览器进行解释执行,整体在浏览器进行执行的程序语言
- 主要应用在客户端,在服务端也有所应有(Node.js)
- 语言的特点
脚本语言没有编译过程,
基于对象
弱类型的语言:没有类型的规范的原因呢
- 特性:
交互性
安全性
跨平台性-
js的黑色艰难历史:后续被别人进行抄袭等创作,蹭热度最成功的语言之一
-和JAVA的关系:语法十分相似,但其实毫无关系。
- 1995年5月,Netscape,LiveScript
- 1995年12月,改名为JavaScript
- 1996年8月,微软,Jscript1997-1999年,ECMA,ECMAScript,基于已有的JavaScript和Jscript,提出了标准的Script语法规则,JavaScript和Jscript都遵循这套标准。
-
js的引入:
第一种方式:
在html中的head标签中书写<script>标签,在标签内部写js代码。
<script type="text/javascript">
/*引入方式中,如果出现错误那么将会直接打算执行效果,不会再次往下进行执行
错误点:中英文符号 单词拼写错误
*/
alert(5 + 6);
alert("你好");
/*弹窗进行显示信息*/
alert("Hello World!");
/*在浏览器的控制台进行打印信息*/
console.log("你妹的,滚");
</script>
第二种方式:
引入外部文件中的js代码。在head标签中书写<script>标签,通过标签的src属性引入外部js文件中的js,script标签进行外部引入时,不能进行自闭,否则无效。
<script src="1.js"></script>
src属性代表的时js文件的地址位置,通过引入来进行找到相关的js代码的文件
js解释器:
1. 第二种引入方式虽然标签体中没有内容,也不能写成自闭标签,否则会导致引入不成功
2. 内置一个js的解析器,会把所有的js代码放到js解析器中来进行从上东到下来进行解析,如果发现没有分号会自动添加上分号,如果有分号就不再进行添加分号,相对于外不文件的引入时,写入的js语句进行判断
3. 在浏览器中会内嵌一个js的解释器,对于专门解释js的代码的时候,js将会被浏览器进行解析成可执行的程序代码,从而做出相应的动作。
4. js是弱类型的语言,所以变量定义时不需要指定类型,变量可以指向任意类型的数据
5. js中的分号可以写也可以不写,js解析引擎自动会在需要的地方拼接分号,但是不要养成这种惯,最好在必要的地方都加上分号,一般建议加上分号的操作;
6. js代码可以只要出现在标签就可以,js代码可以出现在html中的任意位置,因为是脚本语言,被浏览器读取进行解释执行的语言
js的语法:
1. 定义变量(可以存储数据信息的最小容器)通过var来进行定义
局部变量 :只能在当前的范围内进行使用
全局变量 :可以在后续的所有的地方来使用
如果使用的var 来声明的变量 那么改变量是全局变量 var a;
如在函数中声明的变量称之为局部变量,同样进行一定的声明,使用var的关键字
什么都不写直接定义变量的话就是全局变量:a - --代表就是全局变量
注意:js定义的变量中可以接收任意类型的数据类型,js是弱类型的语言,没有直接对变量的规定容器中是否定义任意类型额变量
js中的底层用于计算的方式,底层全部是使用浮点型来进行数字的定义。
2. 基本数据类型:总共有五大基本数据类型
数值型(Number ---整型,浮点型)
布尔型(Boolean----包含两个值 true和false
Undefinde(未定义-类型中只包含一个underfinde)
字符串类型(String)
Null(null--->在该类型的容器中只包含一个值那就是 null,一般在值的返回情况)
Number:
代表数字的基本类型。
字段之间需要的是直接类型进行调用字段
JS不区分整形和浮点型,JS中的所有数值类型底层实现都是浮点型
数值类型中有如下几个特殊值
Infinity 无穷大 -Infinity 负无穷大 MAX_VALUE NEGATIVE_INFINITY 属性
POSITIVE_INFINITY 属性
方法:isNaN 方法-->用发,直接进行使用 isNaN(a);判断一个对象是否是数字
object.valueOf( ):返回原始数据类型的原始值
toString 方法--->使用方法:对象.toString([进制]);可以直接将Number类型的数据转换对应的进制,字符串之间支持拼接
console.log(isNaN("sdasf"));
console.log("十六进制"+a.toString(16));
console.log("十进制"+a.toString(10));
console.log("八进制"+a.toString(8));
console.log(b.valueOf());
String类型:
- 可用于处理或格式化文本字符串以及确定和定位字符串中的子字符串。
- newString = new String(["stringLiteral"]):创建对象还是和java差不多进行创建对象
- 字符串中可以包含双引号,该双引号两边需加单引号,也可以包含单引号,该单引号两边需加双引号
- `请注意,JScript 中没有表示单个字符的类型。要表示 Jscript 中的单个字符,应创建一个只包含一个字符的字符串。包含零个字符("")的字符串是空(零长度)字符串。`
- 代码的展示:
//数据的类型可以定义对象也可以进行直接对象赋值,
//赋值的时候,js的解释器会自动进行判断类型感觉
var s="sadasfasg";
var s1=new String("sdahsfkasf");
var s2=new String('sdahsfkasf');
console.log(s1.charAt(6));
console.log("单引号:"+s2.charAt(6));
//弱类型的语言不会进行抛出异常,除非语法错误才会继续抛出异常
console.log(s.charAt(6));
Boolean 数据类型:
- Boolean 数据类型却只有两个值。它们是文字 true 和 false
- 在计算机的底层的信号中 true被变成1 false被转换成 0
- boolObj = new Boolean([boolValue]) boolObj 必选项。要赋值为 Boolean 对象的变量,boolValue 可选项。是新对象的初始 Boolean 值名。
- Boolean 对象是 Boolean 数据类型的包装器。每当 Boolean 数据类型转换为 Boolean 对象时,JScript 都隐含地使用 Boolean 对象。
- 五大基本数据类型,都是原来对象的包装器,对原来类型的包装,并且数据类型都需要大写首字母
- 进行布尔运算的时候,非空的字符串转换为true,空字符串和null都转换成false
Null数据类型:
- Null只有一个值就是null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象
- 在js中认为null的类型是undefined类型 --->不能区分null和undefined类型
- js中的== 表示类型相等,=== 表示的是绝对相等,类型相等,值也是相等的
- //在js认为null类型和undefined类型相等
//null特殊的判断,当前不能区分null和undefined类型,所以认为两者类型是相同的
console.log(null==undefined);
//=== 表示绝对相等,类型相等,比较值是否相等
console.log(null===undefined);
Undefined数据类型:
- 当对象没有被定义初始化的时候,js中会将undefined赋值给当前对象,认为当前对象是Undefined类型。
- 当有以下情况的时候,出现undefined提示
- 当变量没有被赋值初始化的时候 var b;
- 对象属性不存在, var a;
- 要检查一个对象属性是否存在,可以使用新的 in 运算符:
- console.log(flag in Boolean);
- 查看都对象的类型:
- console.log(typeof(8));
js中的自动类型的转换:js在需要时会自动对类型进行转换
- 数字
可以在需要时转换为对应的字符串形式。0会转换位false,其他数字会转换为true.在需要对象时可以自动转换位Number对象。
- 字符串
可以在需要时转换位对应的数值,需要注意当数值和字符串进行加法运算时,会处
理为字符串的拼接,所以需要通过parseInt或parseFolat将字符串强制转换为数值类型参与运算。非空字符串转换为ture,空字符串转换为false。需要对象时自动转换位String对象
- 布尔类型
true转换位1,false转换位0.转换为字符串的"true"和"false".转换位Boolean对象
- 对象类型
如果为null则转成字符串"null",如果为null转换为false
js中的运算符:
- Javascript中的运算符和Java大致相同。
- && || 是逻辑运算符 & | 是位运算符。
- 逻辑运算符和位运算符是不一样的,叫法不同,用法差不多
- 也支持三元运算符 ? : 2+3>5?console.log("aaa"):console.log("bbb")
js语句:
- js中的循环语句和开关语句和java是一样的,但是不同的是js中没有增强for循环的操作
- 特别注意的:js中的赋值和java中的赋值是不一样的,js中支持两边赋值进行交换当单个=号的时候。因为弱类型,被声明为全局变量了 if(a=5)—>中是成立的,每次if语句里面永远是true
- 由于js解释器的自动类型转换发生在判断的时候,有数据类型的转换
- 当是特殊字符的转换的时候,如果是字符串不是空串的话会直接自动类型的转换为true 不是字符串而是其他的字符的的特殊表现形式则自动类型的判断是false
- 空串任何时候表现的形式都是 false
//进行特殊类型的转换语句效果
var a=new Boolean("NaN");
console.log("NaN"+a); true
var a11=new Boolean(NaN);
console.log(a11); false
var a1=new Boolean("null");
console.log("null"+a1); true
var a111=new Boolean(null);
console.log(a111); false
var a2=new Boolean("");
console.log("空串"+a2); false
var a3=new Boolean("undefined");
console.log("undefined"+a3); true
var a31=new Boolean(undefined);
console.log(a31); false
var a4=new Boolean("3");
console.log(a4); true
js函数:
函数中的特殊对象:
arguments 对象:该对象代表正在执行的函数和调用它的函数的参数
1.函数的 arguments 对象并不是一个数组,但是和数组的操作是一样的,和数组本质是一样的
2.arguments 对象只有函数开始时才可用
3. js中的所有函数都内置了该对象
4. 使用引用函数的对象,实质上通过将函数的引用赋值给变量,进行相关的引用操作
第一种创建函数的方式:
function关键字 函数名(参数列表){函数体}
function functionName([argname1 [, ...[, argnameN]]]){ body}
- JavaScript 使用关键字 function 定义函数。
- return 语句可以存在也可以不存在存在是用来返回值
- 函数可以通过声明定义,也可以是一个表达式。
- 通过方法名来直接调用方法
- js函数本质上是一个字符串,一段代码的合集
- 在函数中的参数列表中如果没有接受到值的时候,默认后面的参数是undefined类型,最终的return a+b(假如b没有接收到值 1+undefined====NaN)
- 当函数中的参数列表中给定的值多余参数列表的个数时,默认多余的值不参与运算过程
-
function max(a,b){
console.log(a);
//遍历函数的参数
for(var i=0;i<arguments.length;i++){
console.log(arguments[i]);
}
return a+b;
}
//调用函数
console.log(max(1,2,4));
第二种定义方式:称之为匿名函数的定义
var x = function (a, b) {return a * b}; 分号一定要写
var z = x(4, 3);
上述函数以分号结尾,因为它是一个执行语句。
//直接量匿名函数创建
var x = function (a, b) {return a * b};
console.log(x(1,2,3));
console.log(x); 打印的是函数本身的原始字符串表现形式
js变量类型是弱类型,可以接收任意类型的数据,函数也是一种数据,其本身是一个字符串,如果在直接使用匿名的函数名 则代表的是当前的对象所代表的属性,如果使用变量名(参数列表)的那么表示的是调用方法
第三种定义方式:称之为构造函`在这里插入代码片`数进行创建,用的比较少 Function() 构造函数
- 函数同样可以通过内置的 JavaScript 函数构造器(Function())定义。
- var myFunction = new Function("a", "b", "return a * b");--->此时的Function必须进行大写,因为是包装类的东西。
- var x = myFunction(4, 3);
- 注意构造函数的表现形式是没有花括号的。是构造函数的表现形式,不能进行别的有函数体的表示形式
- 函数的列表的参数从前往后进行标识,参数之间使用双引号的表现形式进行标识,最右边的一个参数则是表示为返回值,如果有返回值的情况
//第三种函数的形式的创建
var k=new Function("a","return a+b");
console.log(k(4,5,9));
console.log(k);
-
函数的本身就是一个对象;如果使用对象进行创建的话,将是直接创建的是构造函数
正是因为函数是对象,所以需要将可以使用直接量的形式进行创建函数和函数的表示。数的本质就是一段js代码的字符串,来回赋值、来回传递都可以,一旦跟一对小括号,就执行这段js代码字符串。 -
函数中的特殊对象:arguments.length代表的是函数在使用过程中接收到的所有的参数个数
-