目录
JS介绍、入门
主流浏览器 内核
IE trident
Chrome webkit/blink
firefox Gecko
Opera presto
Safari webkit
<!-- js引入 -->
1.页面内嵌:
<script type="text/javascript"></script>
2.外部引用:
<script type="text/javascript" src=""></script>
<!-- js基本变量 -->
var 变量名
变量名的命名规则:
1.变量名必须以英文字母、_、$开头
2.变量名可以包含英文字母、_、$、数字
3.不可以用系统的关键字、保留字作为变量名
<!-- 基本语法 -->
运算大于赋值的优先级
var a=10;
var b=20;
var c;
c=a+b;
---c=30
<!-- 原始值和引用值 -->
值类型:原始值和引用值
原始值:Number Boolean String undefined null
引用值:array Object function ...date RegExp
值类型由值决定
原始值存放在stack(栈),引用值存放在heap(堆)
栈:var a=10;
var b=a;
a=20;
document.write(b)
输出结果为10
栈内存中b的10是a的副本,不受a的影响
堆:var arr=[1,2];
var arr1=arr;
arr.push(3); (push:向arr中添加一个值)
document.write(arr1);
输出结果为1,2,3
数据存放在堆内存中,栈内存中存放堆内存的地址,经过拷贝,栈内存中的两个arr和arr1要同时发生变化
使用push才会生效,若重新赋值(arr=[1,3])则为最初arr[1,2]
<!-- 书写规则 -->
js语句后需要加上分号,
js语句后不用加分号的有:function test(){}
for(){}
if(){}
开发规范:var a = 10;任何符号的两侧都要有空格
<!-- 错误 -->
1.低价错误(语法解析错误)
2.逻辑错误(标准错误,情有可原)
js语法错误会引发后续代码终止,但不会影响其他js代码块
<!-- js运算符 -->
运算操作符:
"+":1.数学运算、字符串链接
2.任何数据类型加字符串都等于字符串
"-" "*" "%" "=" "()" "/"
优先级"="最弱,"()"优先级较高
"++" "--" "+=" "-=" "/=" "*=" "%="
赋值的顺序:自右向左
计算的顺序:自左向右
JS比较、逻辑运算符
比较运算符:>,<,==,<=,>=,!=
比较结果为Boolean值
特殊情况:NaN == NaN 结果为false,NaN不等于任何数
逻辑运算符:&&(与),||(或,!(非)
运算结果为真实的值
与运算符(&&):先看第一个表达式转换成布尔值的结果,如果结果为真,那个它会看第二个表达式转换为布尔值的结果,然后如果只有两个表达式的话,只要看到第二个表达式(第一个为真),就可以返回该表达式的值了
var a = 1 && 2;
document.write(a); 结果为2
如果第一个为假,直接返回第一个的值
var a = 0 && 1;
document.write(a); 结果为0
规则:当是真的时候继续进行,直到碰到假的返回,若进行到最后一个直接返回最后一个的值
可作为短路语句:var date = ...;
date && 执行一个语句会用到data
或运算符(||):当是假的时候继续进行,直到碰到真的返回,若进行到最后一个直接返回最后一个的值
应用:
div.onclick = function (e) {
非IE浏览器,要提取出e的值
var event = e;
IE浏览器
var window.event;
}
若要使其兼容:var event = e || window.event
非运算符(!):把值转换成布尔值在取反
被指定为false的值:undefined,null,NaN,"",0,false
条件循环语句
条件语句:if、if else if
if<-->&&转换
for
while,do while
if() {}:if语句,无论条件多少,都会把程序执行完
if() {}else if:当执行到if条件满足时,不会执行后面的程序
if else if必须满足条件互斥
if(i > 90 && i <= 100) {
document.write('good')
}else{} 如果跟的时else,表示除开以上条件应该输出的
var score = parseInt(window.prompt('input'));
document.write('score')
if<-->&&转换
if(1 > 2) {
document.write('a');
}
1 > 2 && document.write('a');
for(var i = 0; i < 10; i++) {
document.write('a');
}
1.var i = 0;
2.if(i < 10){
document.write('a')
}
3.i++;--> i = 1;
4.if(i < 10){
document.write('a');
}
5.i++;--> i = 2;
...
while,do while
while(i < 10) {
document.write(i)
i++
}
do{
document.write('a')
}while()
先执行后判断