JS运算符:
运算符:加、减、乘、除、赋值、取余(也称求余)、自增、自减
例如:定义了变量,却没有赋值,输出就是undefined
var a;
赋值:=
求余:%
自增:++
自减:--
取余的意思是:一个数字除以另一个数字,除不尽的部分就是余数
例如:5除以2 余数为1
自增分为前置++和后置++,自减也同理
关于自增和自减的一个练习:
var a = 1;
var b;
var sum = (b = a+++--a) + a-- + b++;
答案:5 拆分理解:sum = ( b = 1 + 1) + 1 + 2
JavaScript的编译原理:
第一步是分词。把句式的代码分解为各式的有含义的代码块
第二部是解析。通过JS编译器,
第三步是代码生成。
数组:
数组是一个容器,可以存放一个或多个对象。同时没有限制。
1.直接量定义,就是一对中括号声明一个数组对象——var a = ["a","b","c"];
2.采用构造函数Array,var a = new Arrey(8)或var b = new Array("a","b","c")
数组方法 | 增加:
1.使用a.push("a")的方法,元素会被添加到数组的尾部。
2.使用a[0]="a"的方法,设定对应的位置,可以给对应的内存空间塞入数据。
数组方法 | 减少:
1.使用splice的方法,作用是插入、删除或者替换数组元素 a splice(2,1,+)。
(前两个参数进行定位,余下的参数表示插入部分)
2.使用pop的方法,这个方法可以删除数组尾端的元素 a.pop( )。
数组方法 | 转化为字符串:
1.使用join的方法,在元素之间用指定的分隔符进行分隔。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var energy = fruits.join("and");
数组拓展:
数组是一个容器,可以存放一个或多个对象。同时没有限制。
函数 | 定义:
函数是一组可以被重复调用的代码语句。以下是格式:
(1) function myFunction( ) {
document.write("This is my first function!");
}
or
(2) var a = function( ) {
document.write("This is my second function!");
}
1.需用到function关键词,然后空一格,再加函数的名字。
2.(1)的定义会提前加载函数,(2)则不会。
函数 | 作用域:
分为全局作用域和函数作用域(即为局部变量)
没有出现函数时,所以的作用域都为全局作用域。
当发生作用域嵌套时,只能里面的访问外面的,反之不行。
如果当前函数作用域里找不到访问的变量,则会到父级作用域中查找。
函数 | 参数传递:
当var定义变量时,会先赋值undefined,即预备变量。再传递参数。
所有的参数都会装载到函数内部的arguments数组。
数据计算完了要用return a 才能在外部读取。
function add( ){
var sum = 0;
for(var i = 0; i < arguments.length;i++){
sum = sum + arguments[i];
}
console.log(sum);
}
add(1,2,3,4);
函数 | 闭包:
1.在函数作用域的嵌套。
2.内部的函数访问外边的作用域。
3.外部函数把内部函数作为返回指return出去了。
函数 | 自执行函数:
语法:(定义一个没有名字的函数)( );
自执行函数会立即执行,但它只会执行一次。
函数 | New函数:
this是JS中的一个关键字,意思是永远指向当前函数的调用者。
第一种写法:XXX.hellow(); (可以获取对象中的属性)
第二种写法:window['hello']();
第三种写法:var p ='hello'; window[p]();
如果需要输入大量属性,可以用构造函数构建一个对象模板。
如果是一个构造函数,那么首字母要大写。
使用new关键字给对象附加属性。
给两个对象赋值时,若用等于号,指向的是同一个对象。
除了基本数字类型,其他都属于引用数据类型。
如果只是用等于号,那两个变量都属于变量区。
会调用同一块内存地址,也就是真实的对象地址。
函数 | 回调函数:
函数可以作为另一个函数的参数
当函数需要调用数据时,用callback(函数名)获取。
Comments NOTHING