JavaScript从无到有(一天完成)

JavaScipt概念说明

what,how

脚本轻量级编程语言

应用场景

网页特效,服务端开发(Node.js),命令行工具(Node.js) 桌面程序(Electron) 游戏开发 ,app 无所不能...

和其他的两个兄弟区别

  1. HTML:提供网页的结构,提供网页中的内容

  1. CSS: 用来美化网页

  1. JavaScript: 可以用来控制网页内容,给网页增加动态的效果

规范

书写位置

行内(<input type="button" value="按钮" onclick="alert('hello world')"> ),内部,外部

内部 script标签内

外部

<head>
 <script>
   alert('Hello World!');
 </script>
</head>

定义

var 声明变量 let声明变量,只在let命令所在的代码块有效 常量const声明不能改变和python约定俗成的不一样 函数function 创建对象,var person=new Object()

注意

变量名是区分大小写的 推荐使用驼峰体命名规则 ,首字母为小写,第二个单词首字母大写便于区分 保留字不能用作变量名

数据类型

简单数据类型: 字符串String 数字类型Number parseInt判断是不是整型数字 如果是数字就返回数字,有小数四舍五入进入整数,parseFloat

复杂数据类型Object

获取变量的类型typeof

简单数据类型

数字类型Number

var a=10e-5 或者var a=10e5为小数点往后移动5位,往前移动5位 parseInt('') 判断字符串是不是整形数字,如果是 就返回数字 不是数字返回NaN表示不是数字,

是浮点型数字返回整数数字

parseInt('')

反之亦然

字符串String

拼接 .concat(value)拼接

.trim()移除空白,trimrignt,left

.toLowerCase()小写 up..大写 切割字符串, .split('i',length)

长度.length

.substr(from,to)子序列,顾头不顾尾 .slice(start,end)切片 .charAt(i)返回第i字符

.indexOf(sub,start) 返回子序列索引,

特点

//slice()的特点相当于python中的切片,
//substr()特点,start >end 交换他们位置,
//参数为-数或者不是数字则会被0替换

布尔Boolean

False

""(空字符串)、0、null、undefined、NaN都是false。

uderfined声明了变量但是没有赋值相当于光秃秃的抽纸器,但是它只是声明它是抽纸器

null 变量的值是空的,相当于抽纸有纸筒的抽纸器

True

数组

数组

数组对象的作用是:使用单独的变量名来存储一系列的值。类似于Python中的列表。

常用方法:

方法说明
.length数组的大小
.push(ele)尾部追加元素
.pop()获取尾部的元素
.unshift(ele)头部插入元素
.shift()头部移除元素
.slice(start, end)切片
.reverse()反转
.join(seq)将数组元素连接成字符串
.concat(val, ...)连接数组
.sort()排序
.forEach()将数组的每个元素传递给回调函数
.splice()删除元素,并向数组添加新元素。
.map()返回一个数组元素调用函数处理后的值的新数组

特别说明

forEach(function(Value,index,arr)) value 为必选,当前的元素, 索引, 数组 splice(index,howmany,item.....) 从索引位置开始删除多少个为必选,item可选,添加新元素 map() map(function(Value,index,arr)) value必选,索引和数组可不选

运算符

算数运算符

+,-,*,/

++自增

x=++y x=y++

--自减

... 自增符号在前面表示先计算后赋值,相当于先给钱后吃饭,反之亦然

赋值运算符

与python一样...

字符串运算符

+ +=

比较运算符

!=和!==(值不相等,类型也不相等,)

===类型,值也是一样的

逻辑运算符

&&和 ||或 !非 假假为True

流程控制

分支结构

根据不同的情况执行对应的代码

if(...)){...}else{...} if(...){...}else if (...){...} else{...}

总结elif 变成了else if

(条件){执行语句}

三元 var c=a>b? a:b 定一个c的变量 a大于b吗? 大于的结果: 不大于的结果

循环结构

重复 switch 常量 每一个语句后面加break 不然的话 就继续运行下一个,抓紧抬走,default:如果都不对的话就走到这,

后面跟着对象()

fo循环

4步骤完成 for (初始化表达式1;条件表达式2;自增表达式3){循环体4}

while 定义变量; while(变量条件){循环体;变量自增;}

函数

无名函数

var f=function (){ console.log(456)}

f()调用

有名函数

function a(){} a()调用

es6

使用=>定义函数

var sum = (num1, num2) => num1 + num2;

// 等同于

var sum = function(num1, num2){

   return num1 + num2; //这里的return只能返回一个值,如果想返回多个值需要自己手动给他们包一个数组或对象中

}

立马执行函数

先写两个括号防止混乱,

(function(a,b){return a+b;})(1,2);

闭包函数

与python作用域的关系一模一样

var city = "BeiJing";

function f(){
      var city = "ShangHai";

      function inner(){
            console.log(city);

     }

      return inner;

}

var ret = f();

ret();

arguments

JavaScript参数可以不写,

function add(a,b){
   console.log(a+b);
   console.log(arguments.length);
   console.log(arguments[0]);//arguments相当于将出传入的参数全部包含,这里取得就是第一个元素1
}
add(1,2)

输出 3

2

1

当函数调用的前一瞬间,会先形成一个激活对象:Avtive Object(AO),并会分析以下3个方面:

1:函数参数,如果有,则将此参数赋值给AO,且值为undefined。如果没有,则不做任何操作。 2:函数局部变量,如果AO上有同名的值,则不做任何操作。如果没有,则将此变量赋值给AO,并且值为undefined。 3:函数声明,如果AO上有,则会将AO上的对象覆盖。如果没有,则不做任何操作。

object

本质就是兼职对的集合hash结构,用字符串作为键.

var a={"name":"ajax"}

遍历对象内容

var a = {"name": "Alex", "age": 18};

for (var i in a){console.log(i,a[i])}

python: for i in a: print(i,a[i]])

获取时间对象

Date对象方法

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

编写代码,将当前日期按照 2011/3/20 11:12 星期三 格式输出

posted @ 2019-10-15 21:22  Huise.J  阅读(240)  评论(0编辑  收藏  举报