zoukankan      html  css  js  c++  java
  • JavaScript2

    js的运算符号

    # 算术运算符
    var x = 10;
    var res1 = x++;
    var res2 = ++x;
    res1 10
    res2 12
    ++表示自增1 类似于 +=1
    加号在前先加后赋值 加号在后先赋值后加
    
    # 比较运算符
    1 == '1'  # 弱等于  内部自动转换成相同的数据类型比较了
    true  
    
    1 === '1'  # 强等于  内部不做类型转换
    
    1 != '1'
    false
    1 !== '2'
    true
    
    # 逻辑运算符
    	# python中 and or not
      # 对应js中    && || !
    5 && '5'
    '5'
    
    0 || 1
    1
    
    !5 && '5'
    false
    
    # 赋值运算符
    = += -= *= ....
    

    js的流程控制

    # if判断
    var age = 28;
    # if(条件){条件成立之后指向的代码块}
    if (age>18){
      console.log('来啊 来啊')
    }
    # if-else
    if (age>18){
      console.log('来啊 来啊')
    }else{
      console.log('没钱 滚蛋')
    }
    # if-else if else
    if (age<18){
      console.log("培养一下")
    }else if(age<24){
      console.log('小姐姐你好 我是你的粉丝')
    }else{
      console.log('你是个好人')
    }
    """
    在js中代码是没有缩进的 只不过我们处于python书写习惯人为的加上了而已
    ()条件
    {}代码块
    """
    
    # switch语法
    """
    提前列举好可能出现的条件和解决方式
    """
    var num = 2;
    switch(num){
      case 0:
      	console.log('喝酒');
      	break;  # 不加break 匹配到一个之后 就一直往下执行
      case 1:
      	console.log('唱歌');
      	break;
      case 2:
      	console.log('洗脚');
      	break;
      case 3:
      	console.log('按摩');
      	break;
      case 4:
      	console.log('营养快线');
      	break;
      case 5:
      	console.log('老板慢走 欢迎下次光临');
      	break;
      default:
      	console.log('条件都没有匹配上 默认走的流程')
    }
    
    
    # for循环
    # 打印0-9数字
    for(let i=0;i<10;i++){
      console.log(i)
    }
    # 题目1  循环打印出数组里面的每一个元素
    var l1 = [111,222,333,444,555,666]
    for(let i=0;i<l1.length;i++){
      console.log(l1[i])
    }
    
    # while循环
    var i = 0
    while(i<100){
      console.log(i)
      i++;
    }
    
    # 三元运算符
    # python中三元运算符 res = 1 if 1>2 else 3
    # JS中三元运算  res = 1>2?1:3 
    条件成立取问好后面的1 不成立取冒号后面的3
    var res = 2>5?8:10 # 10
    var res = 2>5?8:(8>5?666:444)  # 666
    """
    三元运算符不要写的过于复杂 
    """
    

    函数

    # 在python定义函数需要用到关键字def
    # 在js中定义函数需要用到关键字function
    
    # 格式
    function 函数名(形参1,形参2,形参3...){函数体代码}
    
    # 无参函数
    function func1(){
      console.log('hello world')
    }
    func1()  # 调用 加括调用 跟python是一样的
    
    # 有参函数
    function func2(a,b){
      console.log(a,b)
    }
    func2(1,2)
    
    func2(1,2,3,4,5,6,7,8,9)  # 多了没关系 只要对应的数据
    VM3610:2 1 2
    undefined
    
    func2(1)  # 少了也没关系
    VM3610:2 1 undefined
      
    # 关键字arguments
    function func2(a,b){
      console.log(arguments)  # 能够获取到函数接受到的所有的参数
      console.log(a,b)
    }
    
    function func2(a,b){
      if(arguments.length<2){
        console.log('传少了')
      }else if (arguments.length>2){
        console.log('传多了')
      }else{
        console.log('正常执行')
      }
    }
    
    
    # 函数的返回值  使用的也是关键字return
    function index(){
      return 666
    }
    function index(){
      return 666,777,888,999
    }
    res = index();
    999
    res
    999  # 只能拿到最后一个
    
    function index(){
      return [666,777,888,999]
    }
    # js不支持解压赋值
    
    
    # 匿名函数  就是没有名字
    function(){
      console.log('哈哈哈')
    }
    var res = function(){
      console.log('哈哈哈')
    }
    
    # 箭头函数(要了解一下)  主要用来处理简单的业务逻辑 类似于python中的匿名函数
    var func1 = v => v;  """箭头左边的是形参 右边的是返回值"""
    等价于
    var func1 = function(v){
      return v
    }
    
    var func2 = (arg1,arg2) => arg1+arg2
    等价于
    var func1 = function(arg1,arg2){
      return arg1+arg2
    }
    

    函数的全局变量与局部变量

    # 跟python查找变量的顺序一致
    var city = "BeiJing";
    function f() {
      var city = "ShangHai";
      function inner(){
        var city = "ShenZhen";
        console.log(city);
      }
      inner();
    }
    
    f();  //输出结果是?
    
    
    var city = "BeiJing";
    function Bar() {
      console.log(city);
    }
    function f() {
      var city = "ShangHai";
      return Bar;
    }
    var ret = f();
    ret();  // 打印结果是?
    
    
    var city = "BeiJing";
    function f(){
        var city = "ShangHai";
        function inner(){
            console.log(city);
        }
        return inner;
    }
    var ret = f();
    ret();
    
    

    词法分析(直接忽略)

    自定义对象

    # 你可以看成是我们python中的字典 但是js中的自定义对象要比python里面的字典操作起来更加的方便
    
    # 创建自定义对象 {}
    """第一种创建自定义对象的方式"""
    var d1 = {'name':'jason','age':18}
    
    
    var d = {'name':'jason','age':18}
    typeof d
    "object"
    
    d['name']
    "jason"
    d.name  # 比python从字典获取值更加的方便
    "jason"
    d.age
    18
    
    for(let i in d){
      console.log(i,d[i])
    }  # 支持for循环 暴露给外界可以直接获取的也是键
    
    
    """第二种创建自定义对象的方式  需要使用关键字 new"""
    var d2 = new Object()  # {}
    
    d2.name = 'jason'
    {name: "jason"}
    
    d2['age'] = 18
    {name: "jason", age: 18}
    

    Date对象

    let d3 = new Date()
    Fri May 15 2020 14:41:06 GMT+0800 (中国标准时间)
       
    d3.toLocaleString()
    "2020/5/15 下午2:41:06"
    
    # 也支持自己手动输入时间
    let d4 = new Date('2200/11/11 11:11:11')
    d4.toLocaleString()
    
    let d5 = new Date(1111,11,11,11,11,11)
    d5.toLocaleString()  # 月份从0开始0-11月
    "1111/12/11 上午11:11:11"
    
    # 时间对象具体方法
    let d6 = new Date();
    d6.getDate()  获取日
    d6.getDay()		获取星期
    d6.getMonth()		获取月份(0-11)
    d6.getFullYear()		获取完整的年份
    d6.getHours()			获取小时
    d6.getMinutes()		获取分钟
    d6.getSeconds()		获取秒
    d6.getMilliseconds()  获取毫秒
    d6.getTime()					时间戳
    

    JSON对象

    """
    在python中序列化反序列化
    	dumps 		序列化
    	loads			反序列化
    
    在js中也有序列化反序列化
    	JSON.stringify()								dumps
    	JSON.parse()										loads			
    """
    let d7 = {'name':'jason','age':18}
    let res666 = JSON.stringify(d7)
    "{"name":"jason","age":18}"
    
    JSON.parse(res666)
    {name: "jason", age: 18}
    

    RegExp对象

    """
    在python中如果需要使用正则 需要借助于re模块
    在js中需要你创建正则对象
    """
    # 第一种 有点麻烦
    let reg1 = new RegExp('^[a-zA-Z][a-zA-Z0-9]{5,11}')
    # 第二种 个人推荐
    let reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
    
    # 匹配内容
    reg1.test('egondsb')
    reg2.test('egondsb')
    
    # 题目 获取字符串里面所有的字母s
    let sss = 'egondsb dsb dsb'
    sss.match(/s/)  # 拿到一个就停止了
    sss.match(/s/g)	# 全局匹配  g就表示全局模式
    
    sss.match(/s/)
    ["s", index: 5, input: "egondsb dsb dsb", groups: undefined]
    sss.match(/s/g)
    (3) ["s", "s", "s"]
    
    # 全局匹配模式吐槽点
    let reg3 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/g
    reg2.test('egondsb')
    
    reg3.test('egondsb')  # 全局模式有一个lastIndex属性
    true
    reg3.test('egondsb')
    false
    reg3.test('egondsb')
    true
    reg3.test('egondsb')
    false
    
    reg3.lastIndex
    0
    reg3.test('egondsb')
    true
    reg3.lastIndex
    7
    
    # 吐槽点二 
    let reg4 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
    reg4.test()
    
    reg4.test()  # 什么都不传 默认传的是undefined
    true
    reg4.test()
    true
    
    reg4.test(undefined)
    true
    let reg5 = /undefined/
    undefined
    reg5.test('jason')
    false
    reg5.test()
    true
    
    """
    总结 你在用js书写正则的时候一定要注意上述问题
    一般情况下你后续也不会解除到了
    """
    
  • 相关阅读:
    HDU 1495 非常可乐
    ja
    Codeforces Good Bye 2016 E. New Year and Old Subsequence
    The 2019 Asia Nanchang First Round Online Programming Contest
    Educational Codeforces Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises)
    AtCoder Regular Contest 102
    AtCoder Regular Contest 103
    POJ1741 Tree(点分治)
    洛谷P2634 [国家集训队]聪聪可可(点分治)
  • 原文地址:https://www.cnblogs.com/bailongcaptain/p/12907202.html
Copyright © 2011-2022 走看看