JS极速学习版_由来,使用以及操作符

javascript:

 js:
脚本语言
作用:进行本地的表单校验
需要解析执行
	js解析器
        火狐:js解析器
        谷歌:js解析器
            兼容性较差
统一规则:
    javascript
	js:核心js + dom +bom
全称javascript
    java:服务器端语言
    没有关系

1.由来

     网景公司:(主开发浏览器)
    统一标准:
    javascript:核心js + dom(文档对象模型)+ bom(浏览器对象模型)
        ECMAScript:核心js es5  es6
        dom:document object  model    
            文档:HTML5文档    将盒子<=>对象
            div
            事件:事件监听(监听用户是否点击我)
            <button></button>
        html
				body
					div
				head
					title
					meta

		js:
			html
			 |
			body。    head
			 |			|
			 div	  mate title

        bom:brower   object  model
            杯子:
                body:玻璃
                head:铝合金
                content:塑料
                content:水
            属性名,标签,和方法
                alert();  //浏览器弹框

2.js特点

     1.js是脚本语言
        特点:
            本身具有逻辑能力和行为能力
            >1+1
            需要解析执行
    2.解释性语言
        需要js的解析器解析执行
        默认:浏览器中内置js解析器
        node:js解析器(运行环境)
    3.弱类型语言
        Java:强类型语言
            int a=10;
            a="hello";//报错
        js:弱类型语言
            var a=10;//number
            a="hello";//string
    4.从上到下依次执行
       优先解析函数的声明,再解析使用var操作符所声明的变量
        代码书写:
            say()
            functioon say(){}
        解析顺序:
            functioon say(){}
            say();
        执行顺序:
            functioon say(){}
            say()
    5.大小写敏感
        var a=10;
        console.log(A);  //报错

3.使用
4.基础语法

 1.变量的声明
 2.注释
 3.语句

5.局部变量和全局变量
6.数据类型

4.使用
    1.node 
       node 直接进入,两次ctrl+c  退出
        js运行环境:谷歌浏览器内置的js解析器
        1.repl环境
            r:read读取
            e:evel执行/解析
            p:print打印
            l:loop循环
            >
            适合短的代码测试,不适合长代码
                console.log(10);输出到控制台上
        2.命令:
            命令执行文件
            ls->程序
            ls:
            node:
                path
                /opt/node/bin
            node index.js
                index.js
    2.浏览器
        js-嵌入>html 
        1.内联脚本
            <script></script>标签
        2.外部引入
            创建一个外部的脚本文件
                .js为后缀名的文件
                <script src='外部文件地址'>
                注意:外部引入脚本的script标签内部不能再写js代码,
                如果写了,解析器会忽略

5.基础语法
    1.变量的声明            
        var a=10;
        标识符声明规则:
            1.变量名 必须由字母,数字,下划线以及$组成
            2.不能以数字开头
            3.不能使用关键字和保留字
                   关键字:在js中具有特殊意义
                    保留字:即将成为/有可能成为关键字的特殊字符
                    int a=10;
            4.建议使用驼峰式命名
                 从第二个单词开始首字母大写
      声明方式:
            1.var
                var a;//变量的声明不进行赋值
                    a=10;//从内存中获取a变量并赋值为10;

                var a=20;//变量的声明并赋值

                a=30;//变量的声明并赋值

                var a=10,b=20,c=30;//同时声明多个变量,使用逗号
            2.let
                1.使用let声明的变量只在当前作用域块内有效
                2.不能使用let重复声明变量。不在同一作用域内,可以重复声明
                3.不会对let声明的变量进行解析提升
            3.const
                1.对于使用const声明的变量,只在当前作用域内有效
                2.使用const声明一个常量,一旦声明不可修改
                3.当属性值为引用数据类型时,引用地址不变,内容可以变
    2.注释
        单行注释: //注释内容
        多行注释:/*多行注释内容*/
        作用:便于维护和管理,代码更具有可读性
        嵌套:单行注释可以嵌套,多行注释不可以嵌套
    3.语句
        每一个语句建议使用分号结尾

6.局部变量和全局变量
    1.使用 var操作符并且声明在函数内部-》局部变量
    作用域:
        var a=10;
    全局变量
        js的全局作用域内都能使用的变量
    局部作用域:
        js中函数内部
    
    只要声明在函数内部,并且使用了var操作符的变量即为
    局部变量;其他声明为全局变量
    2.let
        只在当前作用域块内有效
    3.const
        只在当前作用域块内有效

7.数据类型
    typrof(a):测试a变量的数据类型
        返回值:undefined
                 object(null+object)
                 number
			     boolean
			     string
			     function
        返回值类型:string
    6种数据类型:
    5种基本数据类型(简单数据类型)
           1.undefined:未定义
                 1.var a;
                 2.var a=undefined;
                 3.既没有声明也没有赋值的变量
           2.null 空引用数据类型
              var a=null;
		当前变量即将指向一个引用数据类型,但是此时未指向
	注意:
		undefined派生自null
		null==undefined:true
           3.number
             所有数值类型均为number类型
		var a=10;
		var a=10.5;
		var a=0xa;->10
			var a=0x10;->16
		var a=010;-->8

		NaN:
			NOT A NUMBER
			var a="hello"/10;// NaN
		isNaN(a):
			返回a变量是不是不是一个数
			isNaN(10):
				false:不,他是一个数
				true:是。他不是一个数
			对于number类型:false
			对于非number类型:true

		infinity:(number)
			无穷大
			var a=10/0;//infinity正无穷
			var a=-10/0;//-infinity负无穷

			isFinite(a):
				测试a变量是否为无穷数
				true:不是无穷大的数
				false:是一个无穷大的数
           4.boolean
              true
		      false
           5.string
              所有使用了""/''包裹的字符,都为string类型
		var a='undefined';
		var a="null";
		var a="10";

		json:
			json字符串:
				[{
					"name":"lisi",
					"age":20
				},{
					name:'lisi',
					"age":30
				}]


			``
    1种引用数据类型(复杂数据类型)
          
 function say(){}
	object:
		function
		array
		math
		date
		。。。
		实例对象:
		var student={
			name:'lisi',
			age:20
		}

		var student=new Object();
		student.name='lisi';
		student.age=20;


		自有属性/方法:
			constructor:构造者
			toString():
				将当前实例对象转换为字符串
				object:[object object]
				function(){}:function(){}
				[1,2,3]:[1,2,3]
			valueOf():
				直接输出当前实例对象的value值

7.值传递和引用数据传递

 	var a=10;
   c=a;//从右到左进行赋值
console.log(c);
c=c+1;
console.log(c);//11
console.log(a);//10


基本数据类型在进行值传递时,只是传递值;
引用数据类型在进行值传递时,传递的是引用地址;

var a={
	name:'lisi'
}

c=a;
c.name='terry';
console.log(a.name);//terry
console.log(c.name);//terry

8.操作符
算数运算符:

	+ +=:
		a+b:
			1.两个变量均为number类型,直接进行计算
			2.其中一个不为number,并且不为string和object,将当前变量转换为number类型之后再进行计算
			null+10
			3.如果其中一个值为string类型,那么直接进行字符串拼接
			4.如果其中一个值为object类型,另一个不为string类型,那么默认调用object中的valueof/tostring()
			a>默认调用obj的tostring()
			b>如果只重写了tostring,那么调用tostring
			c>如果只重写了valueof,调用valueof
			d>如果即重写了tostring又重写了valueof,调用valueof

		a+=b:a=a+b//a+=1->a=a+1
	- -=
	* *=
	/ /=
	% %=

比较运算符:

	返回值为boolean类型
	>:
		a>b:
			1.两个均为number,直接比较
			2.两个值中只要有一个不为number,将其转换为number类型再进行比较
				true>0:true
			3.两个值均为字符串类型,不进行数据类型转换,比较字符串的字符编码
			"a">"A":true
	>=
	<
	<=
	==:
		相等
		a==b
		1.两个均为number,直接比较
		2.两个值中只要有一个不为number,将其转换为number类型再进行比较
				true>0:true
		3.两个值均为字符串类型,不进行数据类型转换,比较字符串的字符编码
			"a">"A":true
		4.两个值均为引用数据类型,比较引用地址


		null==undefined:true


	===:
		全等
		不进行数据类型转换,如果数据类型不同,返回false,如果数据类型相同:
			10===11
			"10"==="11":字符编码
			null===null:true
			null===undefined:false
			true===false
			stu1===stu2:比较引用地址

逻辑运算符:

	逻辑与:
		&&
		同真则真,有假则假
		a&&b:
		1.如果第一个操作数为null/undefined/0/NaN/""/false,返回第一个操作数
		2.如果第一个操作数为其他,返回第二个操作数

	逻辑或:
		||
		有真则真,同假才假
		1.如果第一个操作数为null/0/false/""/undefined/NaN,直接返回第二个数
		2.如果第一个数为其他,返回第一个数
	逻辑非:
		!
		!!a:将当前变量转换为布尔类型

		!a:
			先将变量a转换为boolean类型,然后取反

三目运算符:

	  分支语句:
	  	if(a=1){
	  		console.log("hello")
	  	}else{
	  		console.log("error");
	  	}
	  --->
a=1?console.log("hello"):console.log("error")
a>b?console.log(a):console.log(b)

一元运算符

 +:
		+a:
			如果a变量为number值,那么直接返回对应的number
			如果a变量为其他数据类型,那么将a变量转换为number类型
			+10-》10
			+null->0
	-:
		-a
		-(-a):将变量a转换为number类型

	++:
		a++:a=a+1
			先操作变量然后再进行自增操作
			1.console.log(a);
			2.a=a+1
		++a:a=a+1
			先进行自增操作,然后再进行变量操作
			1.a=a+1;
			2.console.log(a)

	--:
		a--:a=a-1
		--a:a=a-1

位运算

  将变量转换为二进制进行计算,执行效率更高
	原码-》反码-〉补码
	js中number以64位存储,在进行位运算时,使用32位2进制的数值进行计算

	正数的原码=反码=补码
	负数:
		反码=原码符号为不变,其他位取反
		补码=反码+1

9.数据类型转换

null/undefined没有转换函数
number:
	Number(a)
		10.3:10.3
		true:1
		false:0
		null:0
		undefined:NaN
		"":0
		"hello":NaN
		"10.6":10.6
		"+10":10
		"h10":NaN
		"10p":NaN
	parseInt(a):
		10.3:10
		true:NaN
		false:NaN
		null:NaN
		undefined:NaN
		"":NaN
		"hello":NaN
		"10.6"->10.6->10
		"+10":10
		"h10":NaN
		"10s":10
	parseFloat(a):
		10.3:10.3
		true:NaN
		false:NaN
		null:NaN
		undefined:NaN
		"":NaN
		"hello":NaN
		"10.6":10.6
		"+10":10
		"h10":NaN
		"10s":10

	+a: Number(a)
	-(-a)


	*--》number
		boolean
		null
		undefined
		string

boolean:
	*->boolean
		null:false
		undefiend:false
		number:
			0和“”:false
			非0和非空:true

	Boolean()
	!!a
string:
	String():
		""/''
		直接在当前变量外侧加引号
		String(null)->"null"
		String(undefiend)->"undefiend"
	toString(num):
		null和undefined没有toString()

	+""

10.流程控制语句

1.分支语句
	if else:
		if(boolean){
			true//
		}else{
			//false
		}

		if(boolean){
			//true
		}else if(boolean){
			//true
		}else if(){

		}else{
			//默认
		}

	switch case:
	switch(key){
		case value:	
			console.log()
			break;
		case value2:
			console.log();
		default:
			console.log()
	}



	break:跳出循环体,不再执行下一次循环
	continue:结束本次循环,继续执行下一次循环

2.循环语句
	前置条件判断语句:
	三要素:
		初始条件
		结束条件
		迭代条件
	for(var i=0;i<=5;i++){
		循环体
	}

	死循环:
		for(;;){

		}

	label语句:
		name:for(){}



	初始条件;
	while(结束条件){
		//循环体
		//迭代条件
	}

	var i=10;
	while(i<=5){
		console.log(i);
		i++;
	}

	死循环:
		while(true){}

后置条件判断:
	循环体至少执行一次
初始条件
do{
	循环体
	迭代条件
}while(结束条件)

var i=1;
do{
	console.log(i);
	i++
}while(i<=5);


for in:增强for循环
	遍历对象
	var stu={
		name:'lisi',
		age:20
	}

	for(var key in stu){
		key->属性名
		stu[key]-->属性值
	}

with语句
	with(o){
		console.log(name);//o.name
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值