javascript 是什么

程序语言

程序语言是什么?

和计算机交流的语言

计算机是什么?

计算机就是用来做计算的

程序语言就是一条条的人类可读的指令 告诉计算机怎么去做计算

西红柿炒鸡蛋

材料: 西红柿两颗 鸡蛋两颗 油5mg 盐3mg 工具: 刀 铲子 步骤: 1.开火 2.放油 3.油没热就一直烧,直到油热 4.如果使用葱炒,放葱。 5.炒5分钟

程序语言就像一份指令或者一份菜谱 详细的描述了计算机应该怎么去计算

一门程序语言必须具备一些能力,才能和计算机交流明白。

必须能很清楚的告诉计算机 怎样去存储数据 必须能很清楚的告诉计算机 怎样去做逻辑操作

javascript中的逻辑操作

      • / % && || ! === !== >= <= > < (esLint) if(){} if()else{} if(){}else if(){}else if(){}else{} switch(val){ case 1; xxxxxx; break; xxxxxx case 2; xxxxxx break; default; } for(var i = 0; i < 100; i++){

} > while(i < 200){ console.log(1); i++; } > do{ console.log(12); i++; }while(i<300)

数据存储

>var _v = 1                     //Number
>var _v = 'aaa我'               //String
>var _v = [1,2,3,'ss']         // Array
> var _v = {a:1,c:2,b:3}        // Object
> var _v = function(){}         // function
> var _v = undefined;           // undefined
> var _v = null                 // null
> var _v = true                 // Boolean

javascript中用类似于’表’的形式来存储(对象)

从函数这个对象说起

var fn = function(){
	alert(1);
	console.log(1);
	return(1);
}

函数会用一个不可见的属性’调用’来存储函数中的代码 {‘调用’:’alert(1);console.log(1);return1’} 函数这个对象相比其他对象的特殊之处在于他可以被调用 函数名+()可以调用函数

定义函数的时候发生了什么?

要把代表函数的那张表构建完全 1.’调用’这个属性赋值,函数体内部的字符串 2.需要把当前可见范围内的所有的变量,由近到远的记录到链条中,形成一条作用域链。

调用函数的时候发生了什么

调用函数的时候,函数对象会去都去自己身上’调用’这个属性的值,取出来之后把这些字符串交给js解析器去当作javascript代码去执行。 与此同时还会取出函数的作用域链,用来辅助这段代码的执行。

在函数中 this 是什么?

只有在函数中才有this这个东西。 函数在定义的时候 this什么都不是 函数在定义的时候 根据调用者的不同的情况,来决定 this 变成什么

this指针的第一种情况

var da = function{
	var fn=function(){
	console.log(this)
	}
	fn();
}

da();
//正常的定义一个函数(不把函数作为某个对象的属性)
//正常的调用一个函数(使用()的方式调用函数)

//this是指向window对象

this指针的第二种情况


var obj = {
	a:1,
	b:2,
	c:funcgion(){
	console.log(this)
	}
}
obj.c()
//this 指向obj对象 指向它的宿主对象
var el = document.getElementById("aa")
el.onclick = function(){
	console.log(this);
}
el.onclick({client:234,})

this指针的第三种情况

//如果我们需要把this指针换成任何我们想要的对象
//我们需要借助函数对象身上的call和apply方法
var obj = {a:1,b:2};
var fn= function(){
	console.log(this)
}
obj.c=fn
fn()
//this 指向window
obj.c()
//this依然是指向obj对象
obj.c.call()
//用来改变this指向
obj.c.call('aaaab')
//this指向call方法中的第一个参数
fn.call([1,2,3,4])
//[1,2,3,4]

当我们写好一份程序之后,计算机在处理的过程中发生了什么?

对照代码,从上往下的开始解析 var el=document.getElementById(‘id’) var color = [‘red’,’green’] if(color[1]===’green’){

}

事件和事件流

默认情况下, 当一个元素身上的某类时间触发的时候, 该元素的祖先元素都会收到通知, 如果祖先元素身上也注册了同类事件, 那些事件函数也会被一一调用, 调用顺序从下往上, 这种行为被称为事件冒泡, 冒泡只和文档的结构有关和元素的位置无关。

事件冒泡是任何时刻都在进行的。 元素身上注册没注册某类时间,事件都会冒泡