如何引入js
1、页面内 嵌套<script></script>;可以放在body,head,html外都行;
<script type="text/javascript">
console.log('告诉浏览器这里运行的是js');
<script>
2、外部引入js文件<script scr="js.js"></script>
为了符合web标准,结构(heml),表现(css),行为(javascript)相分离,通常使用外部引入;
WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。
对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,
表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。
这些标准大部分由万维网联盟(外语缩写:W3C)起草和发布,
也有一些是其他标准组织制订的标准,比如ECMA(European Computer Manufacturers Association)的ECMAScript标准。
注意:<script src="js.js">
alert('我这个alert是不会执行的');
</scritp>
如果使用外部引入,然后又在里面写js,外部引入生效,写在里面的js是不生效的;
注释
JavaScript 注释可用于提高代码的可读性。
单行注释以 // 开头。
多行注释以 /* 开始,以 */ 结尾。
变量
变量是用于存储数据的"容器"。
变量必须以字母开头
变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
变量名称对大小写敏感(y 和 Y 是不同的变量)
不能用系统的关键词和保留字做为变量名
使用 var 关键字来声明变量
var a = 10;
a = 20;
后面的值会覆盖前面的值;
声明变量a 并给a赋值10;
单一声明法;
var a = 1;
var a = 2;
var a = 3;
标准写法:var a = 1,a = 2,a = 3;
数据类型
JavaScript 数据类型
字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined)。
JavaScript 字符串
字符串是存储字符的变量。
字符串可以是引号中的任意文本。使用单引号或双引号:
var carname="hello";
JavaScript 数字
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:
var x1=34.00;
var x2=34;
JavaScript 布尔
布尔(逻辑)只能有两个值:true 或 false。
var x=true;
var y=false;
JavaScript 数组
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
或:
var cars=new Array("Saab","Volvo","BMW");
JavaScript 对象
对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
var person={firstname:"John", lastname:"Doe", id:5566};
Undefined 和 Null
Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量,占位。
原始值
五种 number,string,boolean,undefined,null;(在栈内是不可改变的值)
放在栈中,内存大小是固定的;栈(stack)先进去的东西最后出来,栈内存是重底部开始存;
var a = 10; 栈底开个内存给他;
var b = a; 栈底接着开个内存给b = 10;
a = 20; 这时是新开一个内存给a = 20;b内存的值不变;栈的值是复制的(存到栈内的值是不可改变的);
引用值
对象,数组,函数等,内存大小不固定的;堆(heap)怎么放怎么拿,散列结构;
var arr = [1,2];
引用值会在栈中存放一个地址指向堆中的值;栈中arr的地址指向堆中的[1,2];
var arr1 = arr;
这边栈中会给一个内存arr1 把arr 的地址复制给arr1,所以他们指向的是堆内的同一个值[1,2];
arr.push(3);此时他们的值都变为[1,2,3];
如果:arr = [4,5];这时arr等于一个新的引用值,所以会在堆内新开一个内存[4,5],arr地址指向他;
arr1的值不会改变;
js语法规则
语句结束要用分号(;),以免引起不必要的错误;
js的错误会终止后面的代码的运行,但不会影响到别的js代码块;js代码块是由<script></script>;
js运算符
+;数学运算,字符串拼接;字符串+上任何数据类型都是字符串;
-,*,/,%(摩尔取余数),=(赋值,优先级最低),‘()’(优先级最高);
++;自身加1;放前先加在执行语句,后面先执行语句,最后在自加;
--;自身减1;
+=;a+=10;a=a+10;a+ = 10 + 1;a = a+10+1;
-=,*=,/=,%=;
比较运算符:
只要是运算,就是要运算的,用到布尔值true 或 false
字符串比较是是比较他的ascll码;
'a' > 'b';字符串比较,比较ascll a的ascll是97 ,b的ascll是98,所以返回false
1 < 2;返回true;
‘10’< '8';这样不是10和8比较,而是字符串10和8比较
先从第一位开始比较,如果比不过就不用看第二位了,返回false;
2 == 2;返回 true;
NaN == NaN 返回false;它是特例,NaN不等于任何东西,包括他自己
undefined == undefined 返回true; >=,<=,!=;返回值也是true或false;
逻辑运算符:
“&&”与运算符;
多个表达式,先看第一个表达式是不是true,如果是的话,他会继续看第二个表达式的值是不是true;
如果都是真输出最后一个表达式的值;如果中途那个为false,就返回flase的那个值;两个表达式的话:
如果第一个是false,就返回第一个的值,反之返回第二个表达式的值;
1 && 2; 1为true,所以返回值为2;
1 && 2 + 3;1为true,返回5;
0 && 2 + 3;0为false,返回 0;
2 && 3 && 5;2为true,继续往下3为true,所以返回5;
2 > 1 && console.log('第一个表达式为true时我才会执行');
&&运算符有中断的作用,当短路语句使用;
&&的运算优先级大于 ||逻辑运算的短路特性:
(表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”
(表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”;
“||”或运算符:
第一个表达式为true,就返回第一个的表达式的值;
事件对象兼容写法:ie(存在windeow.enent)function(e){ var event = e || window.event}
“!”运算符,取反的意思
!123; 返回false;123是true,!123取反就是false;
转换为布尔值会变成false的有undefined,null,NaN,"",0,false