Javascript
1.Javascript的特点
解释性语言:jabascript(单线程、浮点型) php 优点:跨平台 不足:稍微慢
编译性语言:c c++ 优点:快 不足:移植性不好(不跨平台)
Java oak语言:.java --> javac指令 --> 编译 --> .class --> jvm虚拟机 --> 解释执行
Javascript 三部分:ECMAScript (原生有部分) DOM (操作文档部分html和css) BOM (操作浏览器)
主流浏览器(必须有独立内核)市场份额大于 3% | 内核名称 |
---|---|
IE | trident |
chrome | webkit/blink |
firefox | gecko |
opera | presto |
safari | webkit |
2.Javascript的引入方式
1.<script type="text/javascript">内容<script> 页面级js文件
2.<script type="text/javascript" src="index.js"></script> 引入外部js文件
结构 行为 样式 相分离
html js css
3.变量
命名规则(用接近的英文单词) ———— 起变量名一定要以英文语义化
1.变量名必须以英文字母、 _、 $ 开头
2.变量名可以包括英文字母、 _、 $、数字
3.不可以用系统的关键字、保留字作为变量名
var a; 这个叫变量声明。
我们向系统中申请了 var 这个框,命名叫 a给 a 赋值 100,写作 a =100,
这里不是等号是赋值
var a ; a = 100;可以简化写成 var a = 100;
下面是变量,例:
var a = 10;
var b = 20;
var c;
c = a + b;
先运算等号右边的 a+b,运算完后,再赋值给左边 c
先取值,再赋值
3.值类型
原始值 stack 栈 ----------不可改变,后变量申明,重新赋值进行覆盖
- number 数字,例 var a = 123;
- string 字符串,语言放双引号里, 例 var a=”语言”,““是空串
- boolean 布尔值, false, true
- undefined 未定义的值
- null 代表空, 占位用,用空值来覆盖
引用值 heap 堆
- Array 数组 var arr = [1,2,3,4,5,false,” abc” ];
- Object 对象
- function 函数
- RegExp 正则
js 由值决定类型。原始值和引用值唯一的不同是赋值形式不同
4.语句基本规则
1、语句后面要用分号结束“;” 但 function test(){}, for(){}, if(){} 后面都不用加分号
2、 js 语法错误会引发后续代码终止,但不会影响其它 js 代码块
错误分为两种
1)低级错误(语法解析错误),不能写中文
2)逻辑错误(标准错误,情有可原,错的那个执行不了)
3、书写格式要规范,“= + / -”两边都应该有空
5.运算符
赋值的顺序自右向左,计算的顺序自左向右。先计算后赋值
+
1. “+”作用:数学运算、字符串链接
2.任何数据类型加字符串都等于字符串
例 var a = “a” + true + 1; //打印 atrue1
例 var a = 1 + “a” + 1 + 1; //打印 1a11
例 var a = 1 + 1 + “a” + 1 + 1; //打印 2a11,从左向右运算
例 var a = 1 + 1 + “a” +( 1 + 2); //打印 2a3
- * / =
例 var a = 0 – 1; //等于-1
例 var a = 2 * 1; //等于 2
例 var a = 0 / 0; //答案是 NaN,应该得出一个数字类型的数,但是没法表达,
就用 NaN (NaN 是 Not a Number 非数,不是数,但是是数字类型
例 var a = 1 / 0; //是 infinity
例 var a = -1 / 0; //是-infinity
%,摩尔,模,是取余数的意思
例 var a =5%2 //5%2 是五除二的余数,商二余一
例 var a =5%1 //是五除一的余数,结果是 0
例 var num = 1 % 5; //意思是 1 除以 5 的余数。商 0 余 1
优先级” =“最弱【赋值符号优先级最低】,” ()”优先级较高
++ - -
例 var a = 1;
a = a + 1; //结果 2
例 var a = 1;
a ++; //结果 2
“++” 加1赋值(自身加1赋给自身) a ++;等赋值语句运行完才会加 ++ a; document.write(a ++); 显示a
"- -"是自身减一,在赋值给自身
document.write(++ a); 显示a+1的值
例 var a =10; document.write(++a );document.write(a); //答案 11; 11
是先执行++,再执行本条语句 document.write(++a)
例 var a =1; document.write(a ++);document.write(a); //答案 1; 2。 是先执行
语句(document.write(a)),再++,所以第一次打印的还是 a,第二次打印 a++后的值
+=、-=、 *= 、/= 、% =
‘+=’
例
var a = 10; a ++; a ++; a ++; 加十个
简化写法: a += 10;也是 a = a + 10;
例
var a = 10;
a += 10 + 1; //答案 21
例
var a = 1;a = a + 10;等于 a += 10
a ++是 a += 1 的写法
‘/=’
例 var a = 10; a /= 2; //答案: 5,是除二赋给自身的意思
‘*=’
例 var a = 10; a *= 2; //答案: 20,是乘二赋给自身的意思
‘%=’
例 var a = 10; a %= 2; //答案: 0, 10 能整除 2,余数是 0,取余,余数赋给自身。
例 var a = 3; a %= 4; //答案: 3, 3 除以 4,余数为 3,余数赋给自身。
例 var a = 0; a %= 4; //答案: 0, 0 除以 4,余数为 0,余数赋给自身。
例 var a = 1; a %= 10; //答案: 1, 1 除以 10,余数为 1,余数赋给自身。
“>”,” <”,” ==”,“>=”,“<=”,” !=”比较结果为 boolean 值
但凡是运算符,都是要有运算的
用到布尔值, true 或 false
字符串的比较,比的是 ASCII 码(七位二进制 0000000)
" == "
例 var a = NaN == NaN; //答案是 false, NaN 不等于任何东西,包括他自己
例 var a = undefined == underfined; //答案是 true
例 var a = infinity == infinity; //答案是 true
例 var a = NaN == NaN; //答案是 false。非数 NaN 是不等于自己的
NaN 得不出数,又是数字类型,就是 NaN
" != "
非等于,是否不等于,比较结果为 boolean 值: true 和 false
逻辑运算符 “&&”、“||”、“!” 与或非
undefined、null、NaN、""、0、false ==> false
" && "
与运算符(一定返回结果) 会先看与运算符前面的表达式转换成布尔值的结果是否为真,如果为真,那么它会看第二个表达式转换为布尔值的结果,然后如果只有两个表达式的话,只会看到第二个表达式,就可以返回该表达式的值。
如果是三个或多个表达式,会先看第一个表达式是否为真,如果为真,就看第二个表达式,如果第二个也为真,就看第三个表达式(如果为真就往后看,一旦遇到假就返回到假的值),如果第三个是最后一个表达式,那就直接返回第三个的结果。
全真才为真
" || ”
看第一个表达式是否为真,如果为真,则返回第一个值,碰到真就返回如果第一个表达式是假,就看第二个表达式,如果第二个是最后一个,就返回第二个的值
全假才为假,有一个真就为真
“!”
先转成布尔值,再取反