值类型,引用类型,arguments比大小,执行上下文的生命周期,函数变量的作用域,没有块级作用域

(number string boolean null undefined )

值类型 赋值 不会改原数据

(fuction object 数组 )

引用类型 赋值 会修改原数据

函数参数的值传递和引用传递

找arguments中的最大值

var e = mymax(10, 9, 4, 2, 123, 50);

//arguments是类数组不是数组

function mymax() {

if (arguments.length <= 0) {

return NaN;

}

var max = arguments[0];

for (var i = 0; i < arguments.length; i++) {

if (arguments[i] > max) {

max = arguments[i];

}

}

return max;

}

console.log(e);

 

javaScript的任务(js的代码,js的语句)

同步任务:for,求和,js附值,js运算符,表单处理

异步任务:dom事件.dom的api处理,ajax 

javascript是单线程的以队列的方法进行工作

执行上下文的生命周期

总的的生命周期:创建→执行→出栈等待销毁

创建阶段: 创建作用域链(Scope Chain) 创建变量对象(或者AO):首先初始化函数的参数arguments,初始化函数声明,初始化变量(undefined)。函数的优先级要高于变量,如果变量和函数重名,变量会被忽略。 创建arguments对象,检查上下文,初始化参数名称和值并创建引用的复制。 扫描上下文的函数声明(而非函数表达式): 为发现的每一个函数,在变量对象上创建一个属性——确切的说是函数的名字——其有一个指向函数在内存中的引用。 如果函数的名字已经存在,引用指针将被重写。 扫描上下文的变量声明: 为发现的每个变量声明,在变量对象上创建一个属性——就是变量的名字,并且将变量的值初始化为undefined 如果变量的名字已经在变量对象里存在,将不会进行任何操作并继续扫描。 求出上下文内部“this”的值。 执行阶段: 执行变量赋值、代码执行 回收阶段: 执行上下文出栈等待虚拟机回收执行上下文

函数变量的作用域

作用域:就是变量声明的区域,就是变量和函数的可访问范围。在全局声明的变量为全局可见可访问的就是全局变量,如果在函数内部声明的变量只能在函数内部访问 函数的参数只能在函数内部访问,是局部变量 JavaScript没有块级作用域,只有函数作用域和全局作用域。for循环内部定义的变量是函数级别的作用域。 变量没有在函数内声明或者声明的时候没有带var就是全局变量,拥有全局作用域。特殊:var a = b = c = 0; b与c是全局变量。 全局作用域的变量可以在js中任何地方调用,函数作用域的变量只能在自己函数内部调用,包括自己内部定义的其他函数都可以直接调用。 变量的作用域是以它声明时的为准,因为变量的作用域在JS代码的解释阶段就已经完成规则的制定。

没有块级作用域

JavaScript没有块级作用域  for循环、while循环中定义的变量的作用域是函数级别的作用域 C、C#、C++、Java: 在for循环内部定义的变量,只能在for循环内部访问。但是在js中,因为没有块级作用域,所以在for循环内部定义的变量在整个所在的函数内部是可以访问的。

你可能感兴趣的:(JavaScript)