1、js最厉害的是对html增删改查。js不逊色于c、java。jquery、node.js基于js,jQuery是js一个封装的工具,简化js的代码量。
2、js的三大部分:ECMAScript、DOM、BOM
3、字符串加其他类型的数据等于字符串。“a”+1+1=“a11” 1+1+“a”+1+1="2a11"自左向右 1+1+“a”+(1+1)="2a2"括号改变运算的优先级
4、js换行,document.write("
");
5、逻辑运算符&&(碰到假,或者到了最后一个就停,返回当前的结果),1&&6 表达式1为1,为真,把第二个表达式2返回。
0&&6 表达式1为0,为假,直接返回第一个表达式0
1&&true 表达式1为1,为真,把第二个表达式true返回
逻辑运算符&&一般用于短路语句,比如 2 > 1 && document.write("hello wrold"); 这里表达式1为真,直接返回表达式2的结果
6、逻辑运算符 ||(碰到真,或者到了最后一个就停,返回当前结果)
7、逻辑运算符 ! 把当前表达式转换成bool值,再取反。undefined null NaN “” false的bool值为假
8、浏览器弹出输入窗口window.prompt(‘input’);
9、js和java挺像的,只是js的输出语句是document.write();
10、对象 var object_name={lastName:“Deng”,age:40,sex:undefined,wife:“xiaohua”,handsome:false}
11、查看变量的数据类型 typeof(变量)
12、数据类型转换 var num=Number("-123");
13、将某个数或者数字的字符串取整 parseInt(某个数) parseInt(某个数,进制)parseInt(“123.3abc”)程序只能看到数字位123.3,到非数字位截止。
13、类型转换Number() String() Boolean() parseInt(String,radix) parseFloat(string) .toString()
14、isNaN()判断某个数是不是数字
15、!== 绝对不等于
16、num.toFixed(n) 数字num保留n位有效数字
17、js和c不一样,js中 document.write(函数名); 会打印出函数体
18、返回值语句 return + 要返回的值
19、js进行三部曲 : 语法分析、预编译、解释执行
其中预编译阶段,有四步:1、创建AO对象 (Activation Object 执行期上下文,发生在函数内部)
2、找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3、将实参值和形参值统一
4、在函数体里面找函数声明,值赋予函数体
全局变量/函数声明的编译过程:1、创建GO (globe object , 其实就是window)
20、暗示全局变量,即任何变量,未经声明就赋值,此变量为全局变量(即window)所有;一切声明的全局变量,全是window的属性
21、作用域
[[scope]] : 每个js函数都是一个对象,对象有些属性我们可以访问,有些不可以(供js引擎存取,比如[[scope]],作用域,存储运行期上下文的集合)
作用域链 :[[scope]]中所存的执行期上下文对象的集合,这个集合呈现链式链接,我们呢把这个链式链接叫做作用域链
执行期上下文 :一个对象,当函数执行的时候,会创造一个叫执行期上下文的内部对象。一个执行期上下文定义了一个函数执行时的环境。函数每次执行时对应的执行上下文都是杜伊无二的。所以调用多个函数会创建多个执行期上下文。当函数销毁,它所执行的上下文被销毁。
查找变量 :从作用域的顶端依次往下查找。
22、假如name是obj的某个属性 ,则 obj.name 和 obj[name]它们一个意思 , 而且后者效率更高,因为前者要转化成后者执行。后者有很多的用途
23、改变原数组push pop shift unshift sort reverse splice
不改变原数组 concat join split toString slice
数组排序 升序 arr.sort(function(a,b){
if(a>b){
return a-b;}
else{
return -1;}
})
简写的方式
升序 arr.sort(function(a,b){
return a-b;
})
降序
简写的方式
arr.sort(function(a,b){
return b-a;
})
24、arguments是类数组,不是数组
25、document代表整个文档 document.getElementById() document.getElementsByClassName() document.getElementsByTagName() document.querySelector() document.querySelectorAll()
26、遍历节点树 parentNode 父节点(最顶端的parentNode为#document)
childNodes 子节点们
firstChild 第一个子节点
lastChild 最后一个子节点
nextSibling 后一个兄弟节点
previousSibling 前一个兄弟节点
27、基于元素节点树的遍历 parentElement 返回当前元素的父元素节点(IE不兼容)
children 只返回当前元素的元素子节点
node.childElementCount===node.children.length当前元素的子元素节点个数(IE不兼容)
firstElementChild 返回第一个元素节点(IE不兼容)
lastElementChild 返回第一个元素节点(IE不兼容)
nextElementSibling / previousElementSibling 返回后一个 / 前一个兄弟元素节点(IE不兼容)
28、js读写css
var div=document.getElenmentByTagName(‘div’)[0];
div.style.height=“300px”;
.active{ } div.className="active";//比刚刚上面的效率跟高
//查询计算样式,只读,返回的值是绝对值,IE8及以下都不兼容
window.getComputedStyle(ele,null);
29、事件
等同
<script> var div=document.getElementByTagName('div')[0];
div.addEventListener('click',function(){console.log('a');},false) ;//attachEvent和addEventListener差不多,只有一点点区别
div.addEventListener('click',function(){console.log('b');},false) ;
</script>