美文网首页
2019-05-17js基础

2019-05-17js基础

作者: 十点半的橙汁 | 来源:发表于2019-05-20 17:30 被阅读0次

一、语法基础

1、注释
单行注释:在注释文字前加//

/*
多行注释1
多行注释2
*/

2、标识符
由字母、数字、下划线和$符组成,数字不能开头
注意:$不轻易使用,在JQ有特殊意义

3、关键字
for if var while func true false 等等...

4、数据类型
(1)类型
类型名首字母都是大写的
Number(数字)、String(字符串)、Boolean(布尔)、Array(数组)、Object(对象)
a.Number - 包含所有的数字(包括整数和小数),例如: 100, 0.23, -23, 2e5
b.String - 用双引号或者单引号引起来的字符集, 支持转义字符和编码字符
c.Boolean - 只有true和false两个值,分别代表真和假
d.Array - 相当于python中的列表, 用中括号括起来的多个元素。[12, 'abc', true, [1, 2, 3]]
e.Object - 类似python中字典和对象的结合

(2)typeof函数

(3)类型名(数据) - 类型转换
parseFloat(数据) - 将数据转换成浮点数
parseInt(数据) - 将数据转换成整数

result = String(100)
    console.log('=====:',result, typeof(result))
    
    result = parseFloat('12.34')
    console.log('=====:',result, typeof(result))
    
    result = parseInt('12.34')
    console.log('=====:',result, typeof(result))
    
    //typeof(数据) - 获取数据对应的类型
    console.log(2e5)    //在控制台打印,相当于python的print
    console.log(typeof(0.12))  
    console.log(typeof(120)) 
    str1 = 'hello'
    str2 = "Hello\t你好\u4e00"
    console.log(str2)
    
    arr1 = [10, 'abc', false, [1, 2, 3]]
    console.log(arr1, arr1[1])
    
    obj1 = {
        'name':'小明',
        'age': 18,
        'sex':'女'
    }
    console.log(obj1, typeof(obj1))
    console.log(obj1['name'], obj1.name)
    
    obj2 = {
        name:'小明',
        age:18,
        sex:'男'
    }
    console.log(obj2, typeof(obj2))

(5).语句
一行一般情况下只写一条语句,语句结束后可以有分号也可以没有;如果一行有多条语句,语句之间必须有分号
缩进无要求
大小写敏感

二、变量

1、声明变量的语法
(1)语法1
变量 = 值

(2)语法2
var 变量名/var 变量名 = 值
(3)说明
变量名 -- 标识符,不能是关键字;采用驼峰式命名
声明变量如果没有给变量赋值(语法2才支持), 变量的默认值是undefined。

//同时声明多个变量,赋相同的值
    a = b = c = 10
    
    //同时声明多个变量赋不同的值
    var a1, b2 = 6, c2 = 12

三、分支结构

js有if和switch两种分支结构
1、if分支

(1)结构一
     if(条件语句){
     满足条件执行的代码块   <==>
     }

 (2)结构二
     if(条件语句){
        满足条件执行的代码块
     }else{
        不满足条件执行的代码块
     }

(3)结构三
     if(条件语句1){
        满足条件执行的代码块1
     }
     else if(条件语句2){
        满足条件执行的代码块2
     }
    ...

2、switch

switch(表达式){
        case 值1:
            代码块1
        case 值2:
            代码块2
        case 值3:
            代码块3
        ...
        default:
            代码块n

执行过程:
先计算表达式的结果,然后让这个结果按顺序从前往后和每个case
后面的值进行比较,如果那个case后面的值和表达式的结果相等,
就将这个case作为入口,依次执行后面所有的代码块;
直到执行完最后一个代码块或者遇到break为止。
如果每个case后面的值,都和表达式的结果不相等,
直接执行default后面的代码块(default可以不写)

switch(10){
        case 1:
            console.log('表达式1')
        case 3:
            console.log('表达式3')
        case 10:
            console.log('表达式10')
        case 5:
            console.log('表达式5')
        default:
            console.log('最后')
     }  
     

四、运算符

js支持数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算符
1、数学运算符:+,-, *,%,++,--
(1)自加1运算:变量++,++变量

num = 10
     num++   //num += 1
     console.log(num)
     ++num
     console.log(num)

(2)自加自减的坑

    a = 10
    b = a++   //b=a;a+=1
    
    a1 = 10
    b2 = ++a1

2、比较运算符:<,>,!=,>=,<=,==,===,!==
(1)== 判断两个数据的值是否相等(不管类型)
(2)=== 同时判断值和类型是否相等(是python中的==)

console.log(5 == '5')   //true
    console.log(5 === '5')  //false

支持表示范围的连续写法

    num = 10
    reslut = 0 < num <100
    console.log(reslut)
    

3.逻辑运算:&&(逻辑与运算)、||(逻辑或运算)、!(逻辑非运算)
和python中的and,or,not功能一样

console.log(true && true, true && false)
    console.log(true || true, true || false)
    console.log(!true)

4.赋值运算符: =, +=, -=, *=, /=, %=
和python一样

5.复合运算和python一样

6.三目运算符 - 表达式?值1:值2
判断表达式的值是否为true,如果为true整个运算的结果是值1,否则是值2

age = 16
    reslut = age>18?'成年':'未成年'
    console.log(reslut)

五、循环结构

js中循环分为for循环和while循环
1.for循环
( 1).for-in循环

     for(变量 in 序列){
        循环体

让变量依次获取序列中元素的下标(下标/属性名),一个一个取,取完为止,每取一个值执行一次循环体

str1  = 'abc'
    for(x in str1){
        console.log(x, str1[x])
    }

(2)C中的for循环

 for(表达式1;表达式2;表达式3){
        循环体
     }
 执行过程: 先执行表达式1,再判断表达式2的值是否为true;如果为true执行循环体,执行完循环体再执行表达式3;
          再判断表达式2是否为true,如果为true执行循环体,执行完循环体再执行表达式3;
          再判断表达式2是否为true,如果为true执行循环体,执行完循环体再执行表达式3;
          依此类推,直到表达式2的结果为false,循环结束

相当于python中的以下结构:

     表达式1
     while 表达式2:
        循环体
        表达式3
sum1 = 0
    for(num=1;num<=100;num++){
        sum1 += num
    }
    console.log(sum1)

2.while循环
1)while循环

while(条件语句){
        循环体
     }

执行过程和python一样
2)do-while循环

 do{
        循环体
     }while(条件语句)

执行过程::执行循环体,判断条件语句是否为true,为true再执行循环体
执行完循环体又判断条件语句是否为true
以此类推,直到条件语句为false循环结束

sum1 = 0
    for(num=1;num<=100;num++){
        sum1 += num
    }
    console.log(sum1)
    
    
    sum1 = 0
    num = 1
    while(num<=100){
        sum1 += num
        num++
    }
    console.log(sum1)
    
    
    sum1 = 0
    num = 1
    for(;num<=100;){
        sum1 += num
        num++
    }
    console.log(sum1)
    
    //练习: 打印所有的水仙花数
    //153 == 1**3+5**3+3**3
    console.log('===========================')
    for (num=100;num<=999;num++) {
        ge = num % 10
        shi = parseInt(num/10)%10
        bai = parseInt(num/100)
        if (ge**3 + shi**3 + bai**3 == num){
            console.log(num)
        }
    }

六、函数

1.语法

     function 函数名(参数列表){
        函数体
     }
function sum(num1, num2=20){
        console.log(num1, num2, num1+num2)
    }
    //位置参数有效
    sum(10, 30)
    
    //关键参数不报错,但是顺序无效
    sum(num1=2, num2=4)   // 2  4  6
    sum(num2=9, num1=8)   // 9  8  17
    
    //参数可以设置默认值(有默认值的参数要在后面)
    sum(10)

function sum1(num1=10, num2){
        console.log(num1, num2, num1+num2)
    }
    sum1(20)   // 20 undefined NaN(无效数字)
    
//不支持不定长参数
    function sum2(*nums){
        console.log(nums)
    }
    sum2(1, 3)

    function sum3(num1, num2){
        
        return num1+num2
    }
    console.log(sum3(23, 45))
    
    //声明函数其实就是声明一个类型是Function的变量
    x = sum3
    console.log(typeof(x))
    console.log(x(90, 9))

2.匿名函数

     function (参数列表){
        函数体
func1 = function(x, y){
        console.log(x, y, x+y)
        return x+y
    }
    func1(1, 2)
    
    
    a = function(x, y){
        console.log(x, y, x+y)
        return x+y
        
    }(10, 20)
    console.log(a)   // 30

七、字符串

1.字符串
单引号或者双引号引起来的字符集,支持转义字符和编码字符

str1 = 'hello world'
str2 = 'hello\t\'world\''

2.获取字符
字符串[下标]
注意: 1)下标只有正值,没有负的; 2)下标越界不会报错,获取到的值是undefined

    console.log(str1[0])
    
    console.log(str1[-1])

js中不支持[]对应的切片语法,但是有相应的方法

3.相关操作
(1)加法运算
支持字符串和任何数据相加, 如果另外一个数据不是字符串就先转换成字符串再进行拼接操作

    console.log('abc'+'hello')  //abchello
    console.log('abc'+123)     // abc123

(2)比较运算: 和python一样
(3)字符串长度: 字符串.length

console.log(str2.length)

4.相关方法

str2 = new String('hello world')
    console.log(str2)

获取字符串相关方法
(1)字符串.charCodeAt(下标)
获取对应字符的编码值

console.log(str2.charCodeAt(0))

(2)字符串.match(正则表达式),相当于python中的re.match

re = /\d{3}[a-z]{3}/
    console.log('234abc====='.match(re))

(3)字符串.slice(开始下标,结束下标)

console.log(str2.slice(0, 3))

八、数组

js中的数组相当于python中的列表

1.查
arr1 = [10, 2, 30, 4, 5]
    //1)获取单个元素: 数组[下标]
    console.log(arr1[3])   //4
    console.log(arr1[10])  //undefined
    
    //2)遍历
    for(index in arr1){
        console.log('index:'+index, arr1[index])
    }
    
    //2.增
    console.log('=============增加==================')
    //1)数组.push(元素) - 在数组的最后添加元素
    arr1.push(100)
    console.log(arr1)
    
    //2)数组.splice(下标,0,元素)  - 在指定的下标前插入指定的元素
    //数组.splice(下标,0,元素1,元素2,...)  - 在指定的下标前插入多个元素
    arr1 = [1, 2, 3, 6, 7,8]
    arr1.splice(3,0,4,5)
    console.log(arr1)
    
    //3.删
    console.log('=============删除==================')
    //1)数组.pop()  - 取出数组中的最后一个元素
    re = arr1.pop()
    console.log(arr1, re)
    
    //2)数组.shift() - 取出数组中第一个元素
    re = arr1.shift()
    console.log(arr1, re)
    
    //3)数组.splice(开始删除的下标,删除的个数)
    arr1 = [10, 30, 20, 40]
    arr1.splice(1,2)
    console.log(arr1)
    
    //4.改
    //数组[下标] = 值
    arr1[0] = 200
    console.log(arr1)
    
    //5.排序
    //sort(函数对象) 
    //函数对象 - 函数,有两个参数(代表数组中的两个元素), 返回值代表排序方法
    console.log('=================排序==============')
    nums = [90 ,23, 56, 7, 89, 70]
    //数组元素从大到小排序
    nums.sort(function(a,b){return b-a})
    console.log(nums)
    
    //数组元素从小到大排序
    nums.sort(function(a,b){return a-b})
    console.log(nums)
    
    students = [
        {name:'小明', age:18, score:90},
        {name:'小花', age:20, score:70},
        {name:'小红', age:15, score:78},
        {name:'小李', age:30, score:60}
    ]
    
    //将数组元素按照元素的age属性从下到大排序
//  students.sort(function(a,b){return a.age - b.age})
//  console.log(students)
    
    //将数组元素按照元素的score属性从大到小排序
    students.sort(function(a,b){return b.score - a.score})
    console.log(students)

九、对象

//1.什么是对象
    //和python类的对象一样,主要由对象属性和对象方法组成
    //2.创建对象
    //1)对象值 
    obj1 = {
        name: '余婷',
        age: 18,
        gender:'女'
    }
    console.log(typeof(obj1), obj1)
    
    //2)new 类型()
    obj2 = new Object()
    console.log(typeof(obj2), obj2)
    obj2.name = '小明'
    console.log(obj2)
    
    //3.构造方法 - 一个用来创建对象的函数
    //1)函数名相当于类名,首字母要大写
    //2)函数的功能是通过this添加对象属性和对象方法(这儿的this就相当于self)
    //3)返回值是this
    function Person(name, age, gender='男'){
        
        // 通过new的方式调用, this:Person {} 
        // 直接调用, this: Window
        console.log(this)
        
        //添加对象属性
        this.name = name
        this.age = age
        this.gender = gender
        //添加对象方法
        this.eat = function(food){
            console.log(this.name+'在吃'+food)
        }
        
        return this
    }
    
    //4.使用构造方法创建对象
    //对象 = new 构造方法()
    p1 = new Person('小花', 20, '女')
    p2 = new Person('小明', 35)
    
    //5.通过对象使用对象属性和调用对象方法
    p1.name = '小花花'
    console.log(p1.name, p1['name'])
    
    p1.eat('面条')
    p2.eat('面包')
    
    //6.添加/修改属性
    //对象.属性 = 值
    p1.height = 160
    console.log(p1, p2)
    
    
    
    
    function func1(){
        console.log('普通函数')
        console.log(this)
    }
    
//  func1()
    window.func1()
    num = 100   //  window.num=100
    console.log(num, window.num)

相关文章

  • 2019-05-17js基础

    一、语法基础 1、注释单行注释:在注释文字前加// /*多行注释1多行注释2*/ 2、标识符由字母、数字、下划线和...

  • 机械设备安装技术

    设备基础种类及应用 垫层基础允许产生沉降:大型储罐 浅基础扩展基础联合基础:轧机独立基础 深基础桩基础:适用于需要...

  • 基础,基础,基础

    如果有人现在问我,JAVA该怎么学,我会告诉他不要急于求成,少看视频,多练,多思考。但说到这里有人可能会反...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 零基础学画画从入门到放弃

    零基础应该怎么学画画?零基础那就从基础开始学啊!基础是什么?造型基础和色彩基础。 造型基础就是用点线面组成起码能让...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • 基础基础还是基础

    这次去面试,还是被基础给打趴下了。 对于PHP7的新特性没有了解。 对于TP的新特性没有了解。 再一个就是独立完成...

  • 零基础学UI设计需要美术基础吗?

    零基础学UI设计需要美术基础吗?零基础学UI设计需要美术基础吗?零基础学UI设计需要美术基础吗?零基础学UI设计需...

  • 基础基础!

    人生中第一个自主设计的实验方案终于得到认可^O^在设计方案过程中认识到基础知识以及细心的重要性,还有半个学期可以努...

网友评论

      本文标题:2019-05-17js基础

      本文链接:https://www.haomeiwen.com/subject/cclczqtx.html