javascript相关

JS中的数据类型:

  数值类型:

    js中不区别整形和浮点,其中NaN是一种特殊的数值类型,当数据无法转化成数字类型的时候,就是返回NaN。

Var n1=18;
Var n2=18.88
Var n3=1.81e5
Var n4=NaN (not a number)  表示这个值不是数字
parseInt(‘’123’)    返回123
parseInt(‘ABC’)    返回 NaN

  字符串类型:

    字符串拼接用 + 号

    字符串中常用的方法:

 

.length

长度

.trim()

去空格

.trimLeft()

去左空格

.trimRitht()

去右空格

.charAt(n)

返回第n个字符

.concat(value1,value2)

拼接

.indexOf(substring,start)

子序列位置

.substring(n,m)

根据索引获取子序列

.slice(start,end)

切片

.toLowerCase()

小写

.toUpperCase()

大写

.split(n,m) n是以什么分割,m限制返回列表的元素个数

分割

 

  布尔类型:

    true和false均为小写.

    " " ,null ,0, undefined ,NaN均为false

  

  数组:类似与python中的列表 list

    声明方式:

      var a=[]  或则

      var a =new Array('a','b')

    常用方法:

.length

数组的长度

.push(value1)

尾部追加元素

.pop()

删除尾部的元素

.unshift(value1)

头部插入元素

.shift()

头部移除元素

.slice(start,end)

切片

.reverse()

反转

.join(seq)

将数组元素链接成字符串

Concat(val)

拼接数组

.sort()

排序(先将元素转成字符串,在按照ascii)

    

    for 循环遍历数组:

   

  var a=[10,20,30,40];
    for (var i=0;i<a.length;i++){console.log(a[i])}

    undefined 和 null 的区别:

    null表示变量的值是空的  undefined表示只是声明了变量,但是没有赋值

返回undefined
var name

返回null
var age=18

  

 

  自定义对象:相当于python中的字典,但是在js中键不许要加双引号,如果是单引号默认会转成双引号

//  查找
// var person={"name":"dsfsd","age":38};
// console.log(person);
// console.log(person.name);
// console.log(person.age);
//
// for (var i in person){
//     console.log(i);
//     console.log(person[i]);
// }
//
// // 新增  new 关键字形式
// var per=new Object();
// per.name="dddddd";
// per.age="dsf";
// console.log('per.....',per);

 

 

流程控制:

  if - else if -else:

var dd=15;
if (dd>5){
    console.log("dd大于5");  
}else if(dd<5){
   console.log("dd小于5")
}else{
   console.log("dd等于5")
}

  switch case:

var ra=Math.random(0,1);
switch (true){
    case ra<0.5:
    console.log('ddd')  
    break;
    case ra>0.5:
     console.log('aaa');break;
     default:
     console.log('0.5');
}   



一般情况下  swich 都是给出的定值 
假如 var ra=1 或者var ra=2  这两种情况

switch (ra){
    case ra=1:
    console.log('ddd')  
    break;
    case ra=2:
     console.log('aaa');break;
     default:
     console.log('0.5');
}   

但是需要注意的是    case后需要跟break  不然回执行下边的代码

  for循环和while循环:

 var a=[10,20,30,40];
    for (var i=0;i<a.length;i++){console.log(a[i])}

  

var a = 0;
while (a < 10) {
  console.log(a);
  a++;
}

  三元运算:同python中的三元运算符

var a=11;
var b=22;
var c=a>b?a:b

这里的 如果a大于b为真,则输出a。反之则输出b

 

 

函数:

  定义是用function关键字

//定义函数
// function foo(a,b) {
//     console.log(a);
//     console.log(a+b);
//     return a+b+b
//
// }
//调用函数
// 调用的时候,传入参数可以和定义的参数数量不一致可以不报错
// var re=foo(10)   返回结果 10+undefined+undefined----->NaN
// var re=foo(10,22)
// console.log(re)
//
// //匿名函数
// var func=function (a,b) {
//     console.log("a--->",a);
//     console.log("b---->",b);
//     return a*b;

//}
// console.log("匿名函数--->",func(10,10));

//  立即执行函数
// var ab=(function (a,b) {
//     console.log(a-b);
//     return a+b;
// })(4,3);
// console.log(ab)

  作用域:同python。

    函数共有两个阶段,分别为定义阶段和调用阶段。

    所以 ,函数找值的时候,会现在函数内部找,内部找不到,再往上层找,直到找到全局为止。

//闭包函数
// var city="Beijing";
// function f(){
//     var city="Shanghai";
//     function inner(){
//         console.log(city);
//     }
//     return inner
// }
// var r=f()
// r()

此时打印的就是  shanghai

    函数中的arguments关键字,代表函数内所有的参数

// arguments 代表函数内所有的参数
// function f1(a,b) {
//     console.log(a,b);
//     console.log(arguments);
//     var rr=0;
//     for (var i=0;i<arguments.length;i++){
//         rr+=arguments[i]
//         console.log('rr',rr)
//     }
//
// }
// f1(11,22)

  

  js中的词法分析: 

    js在调用函数的那一瞬间,会先进行词法分析
    词法分析过程:
    当函数调用的前一瞬间,会先形成一个激活对象:active object(ao),并会分析以下3个方面:
      1 函数参数,如果有,则将此参数赋值给ao,且值为undefined。如果没有,则不做任何操作
      2 函数局部变量,如果ao上有同名的值,则不做任何操作,如果没有,则将此变量赋值给ao
      并且值为undefined
      3 函数声明:如果ao上有,则会将ao上的对象覆盖,如果没有,则不做任何操作

// var age=18;
// function foo1() {
//     console.log(age);
//     var age=22;
//     console.log(age);
//
// }
// foo1()

此时的打印结果是  undefined  22

  

// var age=18;
// function foo2(){
//     console.log(age);
//     var age=22;
//     console.log(age);
//     function age() {
//         console.log('sdfsdf');
//
//     }
//     console.log(age);
// }
// foo2()



// 执行结果
// ƒ age() {
//         console.log('sdfsdf');
//
//     }
// 22
// 22

 

 

JS中的内置对象:

  1 Date对象:

 

//  1 date对象
// var datatime=new Date()
// console.log(datatime)
// console.log(typeof datatime)
// // 字符串时间
// console.log(datatime.toLocaleString())
// console.log(typeof datatime.toLocaleString())


// 成成指定时间的date对象
// var d2=new Date("2020/2/8 14:46")
// console.log(d2.toLocaleString());//转成字符串格式的本地时间
// console.log(d2.toUTCString());//UTC时间

// var d2=new Date()
// //获取日
// console.log(d2.getDate());
// //获取星期
// console.log(d2.getDay());
// //获取月(0-11)
// console.log(d2.getMonth());
// //获取完整年份
// console.log(d2.getFullYear());
// //获取年
// console.log(d2.getYear());
// //获取小时
// console.log(d2.getHours());
// //获取分钟
// console.log(d2.getMinutes());
// //获取秒
// console.log(d2.getSeconds());
// //获取毫秒
// console.log(d2.getMilliseconds())
// //返回累计毫秒数(从1970/1/1)
// console.log(d2.getTime())

  2 JSON对象:

// var str1='{"name":"at","age":189}';
// var str2={name:"age1","age":5525};
//
// //  字符串转json
// var json_str=JSON.parse(str1);
// console.log(json_str,typeof json_str);
// // json转字符串
// var str_json=JSON.stringify(str2);
// console.log(str_json,typeof str_json);

  3 Math对象:

abs(x) 绝对值
exp(x) 返回e的指数(对数)
floor(x) 对数进行下舍入
log(x) 自然对数
max(x,y) 最大值
min(x,y) 最小值
pow(x,y) x的y次方
random(0,1) 随机数,js中只能使用random(0,1)返回0到1之间的小数没有现成的方法返回更大的随机数
round(x) 把数四舍五入为最接近的整数
sin(x) 正弦
sqrt(x) 平方根
tan(x) 正切

 

 

 

 

 

 

 

 

 

 

  4 RegExp对象:

    js中的正则对象,在调用该方法时正则表达式不能为空,正则表达式后加g代表全局匹配,加i代表忽略大小写

    创建方法:

第一种:

var reg1=new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");

第二种:

/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/

    test方法:

var reg1=new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");
var reg2=reg1.test('aaaa_2');
另外一种
另外一种
/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test("aaaa_2");

    js正则的坑;

      坑一:

// 正则中{5,11}加入了空格  这样即使字符串符合匹配规则也报false
// var reg1=new RegExp("^[a-zA-Z][a-zA-Z0-9]{5, 11}$");
// // var reg2=reg1.test("aaaa_a")
// // console.log(reg2)

      坑二:

//js中的正则坑二 当传入为空时 默认传入undefined
// console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test(undefined));
// console.log(/^[0-9][a-zA-Z0-9_]{5,11}$/.test("undefined"));
// console.log(/^[0-9][a-zA-Z0-9_]{5,11}$/.test());

      坑三:

// js中正则坑三
//  当正则表达式 使用了全局模式g的时候,并且还检测一个字符串
// 此时回引出一个lastindex的概念,lastindex会记住上一次匹配成功的位置
//  这也是为什么 下方打印了四次匹配结果 会出现true false true false的原因

console.log("=======================")
var r=/yuan/g;
console.log(r.test("yuan"));
console.log(r.lastIndex);
console.log(r.test("yuan"));
console.log(r.test("yuan"));
console.log(r.test("yuan"));

    js如果使用replace替换的化,可以使用正则。

  

// 可以在替换中直接使用正则替换 g代表全部替换  i代表不区分大小写

// var ss="Alexddaiai";
// var s1=ss.replace(/a/gi,"uu");
// console.log(s1);

  

 

js是一个大佬花7天的时间写出来,本身很不完善,这些年一直在打补丁来解决bug。

 

posted @ 2020-02-08 10:01  Yuan_x  阅读(162)  评论(0编辑  收藏  举报