首先要了解什么是js

     js是一种运行在客户端的弱类型脚本语言

注释

        js中注释分为单行注释和多行注释

        单行注释 :就是//被注释的代码不会执行

        多行注释:就是/**/,一次可以注释多行代码

//alert('123456') 单行注释用ctrl+/
/*
alert('holle word')
alert('holle word')
alert('holle word')
alert('holle word')
alert('holle word')
*/

输出语句

alert()弹出一个警告框,括号里面填弹出内容;

 console.log()在控制台中打印你想打印的内容,括号里面填写你要输出的内容

document.write()在页面中直接显示你要输出的内容,括号里面填写你要显示的内容

alert('你好');
console.log('我不好');
document.write('今天天气真好')

变量

变量的特点:一个变量只能保存一个值,当你给他第二个值的时候,第一个值就会被覆盖

var a = 1;
// var 定义变量的关键字;
// 关键字和变量名之间必须要用空格隔开
// a 变量名;
console.log(a); //不加引号就是输出a这个变量
console.log('a'); //加上引号就是输出a这个文本
var a = 2;
console.log(a); //会覆盖第一个值,所以输出的是2

变量的命名规则

1.变量不能以数字开头;

2.变量名不能使用关键字和保留字;

3.js中严格要求大小写;比如a和A就不是用一个变量;

4.变量命名必须以字母,下划线或者”$”为开头。其他字符可以是字母,_,$或数字.

5.变量名不允许包含空格和其他标点符号;

6.同时声明多个变量时要用逗号隔开

var age = 18,
address = '天地会',
gongzi = 5000;

数据类型

1.1简单数据类型如:number(数值型),string(字符串),boolean(布尔),undefined(未定义),null(空)

1.2复杂数据类型如:object(对象),function(函数),Array(数组),Date(构造函数),RegExp(正则)

1.3通过typeof来判断数据的类型

var a = 2
console.log(typeof a); //number
var a1 = '2'
console.log(typeof a1); //string
var a3;
console.log(typeof a3); //undefined
var a4 = null;
console.log(typeof a4); //object

数据的类型转换

1.隐式转换

。通过运算转换

2.强制转换

。Number(转换成数值)

。String(转换为字符串)

。parseInt()取整 强制转换为number 如果第一个数不是数字则返回NaN 开头和结尾可以有空格

。parseFloat() 返回一个浮点数 并且强制转换为number 开头和结尾可以有空格 如果第一个数不是数字则返回NaN

。toString() 强制转换为字符串。

var a = 2.9;
var c = ' 1.9sasda'
var c1 = Number(c)
var b = String(a);
var a1 = parseInt(a)
var c2 = parseInt(c)//1
var c3 = parseFloat(c)//1.9
var a2 = parseFloat(a)//2.9
var a3 = toString(a)
console.log(typeof a); //number
console.log(typeof b); //string
console.log(typeof c1); //number
console.log(typeof c2);//number
console.log(typeof a3); //strimg

运算符

1.算数运算符

+(加) -(减)*(乘) /(除)%(取余) ++(自增) --(自减)

var a = 3;//3
a1 = a + 1;//4
a2 = a - 1;//2
a3 = a * 2;//6
a4 = a / 2;//1.5
a5 = a % 2;//1
console.log(a1, a2, a3, a4, a5);
console.log(a++); //先赋值后运算
console.log(++a); //先运算后赋值

2.逻辑运算符

&&(逻辑与)||(逻辑或)!(逻辑非);

除了false,0,null,undefined,'  '   都是真的

console.log(0 && 1); //0
console.log(false && true); //有一个为假就不往下执行
console.log(false || true); //有一个为真就不往下执行
console.log(!(false || true)); //对运行的结果取反

3.比较运算符

>(大于)<(小于)==(等于)===(全等)<=(小于等于)>=(大于等于)!=(不等于)!==(不全等)

console.log(1 > 2); //false
console.log(1 < 2); //true
console.log(1 <= 2); //true
console.log(1 >= 2); //false
console.log(1 == '1'); //true
console.log(1 === '1'); //false
console.log(1 != '1'); //false
console.log(1 !== '1'); //true
  1. 4.赋值运算符 

=(等于) +=(加等于)-=(减等于)/=(除等于)*=(乘等于)%=(取余等于)

var a = 1;
a += 1 //相当于a=a+1
a -= 1 //相当于a=a-1
a *= 2 //相当于a=a*2
a /= 2 //相当于a=a/2
a %= 1 //相当于a=a%2

5.三元运算符

条件?代码1:代码2    如果条件为真就执行第一个否则就执行第二个

流程控制

流程控制就是控制我们的代码按照什么结构顺序来执行,以便达到不同的运算结果

。顺序结构

。分支结构

1if(),if else语句,if else if语句

var a = prompt('请问你今年多大了');
if (a < 18) {
    console.log('你还未成年');
} else if (70 > a > 18) {
     console.log('你成年了');
} else {
    console.log('你已经是一个老年人了');
}

swicth

  1. case穿透。如果每一个case语句执行完毕之后,没有遇到 break , 让程序继续往下执行。
  2. break的穿透  是从第一个满足条件的case开始进行穿透的
  3. default可以写也可以不写
  4. .switch语句,只能够判断准确的一个字面量值  不能够判断范围
var n = 18;
switch (n) {
 case 18:
   console.log('我已经成年了');
   break;
 case 17:
     console.log('我还是未成年');
     break;
 default:
     console.log('请输入一个数值');
}

。循环结构

循环的作用

  1. 简化代码,处理重复执行的代码
  2. 遍历数组

循环的要素

  1. 初始值 作为循环的开始
  2. 条件判断 决定要不要执行
  3. 要循环的语句 
  4. 改变循环初始值 为了让循环停下来

 while循环

var a = 0;
while (a < 5) {
    console.log('我还会想你');
    a += 1
}

do while循环

var n = 8;
do {
    console.log('我被执行了');
    n++;
} while (n < 10)
console.log('后续代码');

while 和 do while 的区别:while会先判断在执行而do while会先执行一边在判断。

for 循环

var a = 5;
for (var i = 0; i < a; i++) {
    console.log(i);
}

for  in循环用来遍历对象(object和arr)

arr = [1, 2, 3, 4, 5];
for (k in arr) {
    console.log(k, arr);
}

同步和异步

  1. 同步会按照顺序执行,会堵塞
  2. 异步不一定按照顺序执行,不会堵塞
  3. 注意同步和异步同时出现会先执行同步
//异步
        // setTimeout(function () {
        //     console.log(1);
        // }, 100)

        // setTimeout(function () {
        //     console.log(2);
        // }, 50)


        // setTimeout(function () {
        //     console.log(1);
        // }, 0)

        // console.log('2');


        function getData(fn) {
            let a;
            setTimeout(function () {
                a = 10      //服务器给的一份数据 10
                fn(a)
            },1000) 
            // return a;
        }

        // var num = getData()
        // console.log(num);//??  undefined
        //10???

        getData(function(num){      //回调函数
            console.log(num);
        })

数组

  1. 数组是一种对象类型
  2. 定义数组
// var arr=[10,20,30]
        var arr = new Array();
        var arr0 = new Array(10, 20, 30);
        var arr1 = new Array(10);//声明一个长度为10的空数组

        console.log(arr);
        console.log(arr0);
        console.log(arr1);

数组的方法单独写了一篇,有兴趣的可以去看看