#JS学习第一天
一.JS基础知识
javascript语言特点:
1.解释性语言
优点:跨平台
缺点:速度稍微慢
// 编译性语言
// 优点:速度快
// 不足:移植性不好(不跨平台)
2.单线程(同一时间只能做一件事)
3.JS三大部分
ECMAScript.DOM.BOM
4.主流浏览器及其内核
主流浏览器 内核
IE trident
Chrome webkit/blink
firefox Gecko
Opera presto
safari webkit
5.JS引入方式
1>.页面级js文件:写在页面任意地方
2>外部引入:
6.JS基本语法
1>变量(variable)
var 变量声明
var a=100;
var b=200;
var c=300;
var a=10,
b=20,
c=30,
d=40,
e;(标准写法)
2>变量名命名规则:
(1).必须以英文字母,_,$开头
(2).变量名可以包括英文字母,_,$,数字
(3).不可以使用系统的关键字,保留字作为变量名原始值:(stack 栈)
Number(数字类型):浮点型
Boolean(布尔类型):true/false
String(字符型):用双引号引起来
Undefined:一个变量经过声明没有赋值
null 占位
引用值(堆数据)
array Object function date RegExp------
var arr =[1,2,3,4,5,false,"abc"]
6.基本语法
1> 语句后面加分号’;’
2>for if语句不用加分号
3>"=,+,/,-"两边都应该有空格
4>JS语法错误会引起程序报错,但不会影响后面的程序运行
(1)低级错误:语法解析错误
(2)逻辑错误:标椎错误,情有可原
7.运算符:"+"(加) “-”(减) “*”(乘) “/”(除) “%”(取余) “=”(优先级最弱) “()”(优先级最高)
"++" "--" "+=" "*=" "%="
1>.加号(有两种功能)
var a = “a” + “b”; 字符串连接
注:任何数据类型加字符串都等于字符串
var a = 1 + 4 ; 数学计算
2>.减号
var a = 2-8; 结果:-6
3>.除号
var a = 0 / 0; 结果:NaN
4>.取余
var a = 5 % 2; 结果:1
var a = 4 % 7; 结果:4
5>. ++
a++:表示先赋值,再加1 赋值的计算:自右向左 数字的计算:自左向右
++a:表示先加1,再赋值
6>.–
a–:表示先赋值,再减1
–a:表示先减1,再赋值
7>.+=
a += 10; 相当于: a = a + 10;
8>.*=(乘等于)
var a = 10;
a *= 2; 相当于: a = a * 2
9>.%=
var a = 0;
a %= 2; 相当于: a = a % 2;
8.比较运算符 :">" “<” “==” “>=” “<=” “!=”
比较运算符结果均为:true / false
var a = NaN == NaN;结果为:false(只有NaN不等于自身)
9.逻辑运算符:&&(与) ||(或) !(非)
注:undefined , null , NaN , “” , 0 ,false ==>转换为布尔值都为:false;
(1) && (如果前面为真,才执行后面的语句)先看第一表达式的值转换成布尔值的结果,如果结果为真,那么它会看第二个
表达式转换为布尔值的结果 然后如果只有两个表达式的话,就可以返回该表达式的值
例:var a = 1 && false && 1;
结果:false
var a = 1 + 9 > 10 && 5 / 3 =1
结果:false (只有两边都为真才为真)
(2) || (碰到真就返回)
var a =1 || 2; 结果:1
(3) !(非)
var a = true;
a = ! a; 结果:false
10.条件语句:if,else,for,do while
(1)if
if(1 > 0){
document.write("值正确");
}
结果:值正确
if(1 > 5){
document.write("值正确");
}
结果:false
(2) else (为if条件的补集)
(3) for
for (var i = 0; i < 10; i++){
document.write('a')
}
结果:0 1 2 3 4 5 6 7 8 9
for (var i = 0; i < 100; i++){
if (i % 3 == 0 || i % 7 == 0 || i % 5 == 0){
document.write(i+" ");
}
} 打印出能被 3.5.7整除的小于100的数字
(4)do while
作业例题:
(1):计算2的n次幂,n可输入,n为自然数
var n= parseInt(window.prompt('input'))
var mul = 1;
for (var i = 0;i < n ;i ++){
mul *= 2;
}
document.write(mul);
递归应用:典型的有阶乘和斐波拉契数列
递归:1.找规律 2.找出口
(2):计算n的阶乘.n可输入. 例如:5! = 54321*1;
阶乘规律 :n!=n*(n - 1)!
function mul(n){
if(n == 1 || n == 0){
return 1;
}
return n * mul(n-1);
}
(3):斐波拉契数列 如:1 1 2 3 5 8 输出第n项(前两位的和等于后一位)
规律:fb(n) == fb(n-1) + fb(n-2);
// fb(5) ==> fb(4) + fb(3);
// fb(4) ==> fb(3) + fb(2);
// fb(3) ==> fb(2) + fb(1);
function fb(n){
if(n == 1 || n == 2){
return 1;
}
return fb(n-1)+fb(n-2);
}
(4):输入a,b,c三个数,找出最大值
var a = parseInt(window.prompt('input'));
var b = parseInt(window.prompt('input'));
var c = parseInt(window.prompt('input'));
if (a > b){
if (a > c){
document.write(a);
}else{
document.write(c);
}
}else{
if (b > c ){
document.write(b);
}else{
document.write(c);
}
}
(5):打印出100以内的质数
var count = 0;
for ( var i = 1; i < 100; i ++){
for ( var j = 1; j <= i; j ++){
if (i % j == 0){
count ++;
}
}
if (count == 2){
document.write(i+" ");
}
count = 0;
}
(6):编写一个程序,输入一个三位数的正整数,输出时反向输出.如:输入123,输出321
11.条件补充语句:switch(里面放的条件)case,break(终止循环),continue(终止本次循环,开始下一次循环)
12.初始引用值
1>.数组:arr
var arr = [1,2,3,4,5,6,7,10,11];
for (var i = 0; i < arr.length; i ++){
arr[i] += 1;
}
2>.对象(都为存储数据的仓库)
13.编程形式的区别
1>面向过程
2>面向对象(c++,java等语言)
14.typeof(返回数据类型)
六种数据类型:number string boolean object undefined undefined function null(Object)占位
15.转换类型
1>显示类型转换
(1)Number(mix):转换为数字类型
例如:将字符123转换为数字123
var num = Number("123")
(2)parseInt(String,radix(指多少进制)):转换为整型,只输出数字,遇到非数字截止
例如:
var num = parseInt(123.598); 结果:123
将f转换为16进制的数
var demo = "f";
var num = parseInt(demo,16)(此数字为:2-36) 结果:15
(3)parseFloat(String):转换为浮点型
(4)toString(radix):(undefined.null不能用 toString())
(5)String(mix)
(6)Boolean():布尔值
2>隐式类型转换
(1)isNaN()——>Number(将NaN中的结果用Number转换后再与NaN进行比较,相同为true,不同为false)
console.log(isNaN(null)); console.log(Number(null)); 结果:0 所以此结果为:false
console.log(isNaN(undefined)); 结果:true
(2)++.--.+-(正负)
var a = "123";经Number隐式转换
a ++; 结果:124 类型:Number;
(3)-*/% ——>Number
(4)&& || !
(5)< > <= >=
(6)==.!=
3>不发生类型转换
(1)!==.===(绝对等于)