【学以致用】JavaScript
为什么80%的码农都做不了架构师?>>>
Javascript的变量:
name = "Asktao"; //全局变量 var name2 = "ASKTAO"; //局部变量
Javascript基本数据类型:
数字: JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。
- parseInt(..) 将某值转换成数字,不成功则NaN
- parseFloat(..) 将某值转换成浮点数,不成功则NaN
- NaN,非数字。可使用 isNaN(num) 来判断。
- Infinity,无穷大。可使用 isFinite(num) 来判断。
- 其他:
常数: Math.E //常量e,自然对数的底数。 Math.LN10 //10的自然对数。 Math.LN2 //2的自然对数。 Math.LOG10E //以10为底的e的对数。 Math.LOG2E //以2为底的e的对数。 Math.PI //常量figs/U03C0.gif。 Math.SQRT1_2 //2的平方根除以1。 Math.SQRT2 //2的平方根。 静态函数: Math.abs( ) //计算绝对值。 Math.acos( ) //计算反余弦值。 Math.asin( ) //计算反正弦值。 Math.atan( ) //计算反正切值。 Math.atan2( ) //计算从X轴到一个点的角度。 Math.ceil( ) //对一个数上舍入。 Math.cos( ) //计算余弦值。 Math.exp( ) //计算e的指数。 Math.floor( ) // 对一个数下舍人。 Math.log( ) //计算自然对数。 Math.max( ) //返回两个数中较大的一个。 Math.min( ) //返回两个数中较小的一个。 Math.pow( ) //计算xy。 Math.random( ) //计算一个随机数。 Math.round( ) //舍入为最接近的整数。 Math.sin( ) //计算正弦值。 Math.sqrt( ) //计算平方根。 Math.tan( ) //计算正切值。
字符串: 串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。
obj.length //长度 obj.trim() //移除两侧空白 obj.trimLeft() //移除左侧空格 obj.trimRight() //移除右侧空格 obj.charAt(n) //返回字符串中的第n个字符 obj.concat(value,value2) //拼接 obj.indexOf(substring,start) //子序列位置 obj.lastIndexOf(substring,start) //子序列位置 obj.substring(from, to) //根据索引获取子序列 obj.slice(start, end) //切片 obj.toLowerCase() //大写 obj.toUpperCase() //小写 obj.split(delimiter, limit) //分割 obj.search(regexp) //从头开始匹配,返回匹配成功的第一个位置(g无效) obj.match(regexp) //全局搜索,如果正则中有g表示找到全部,否则只找到第一个。 obj.replace(regexp, replacement) // 替换,正则中有g则替换所有
数组: JavaScript中的数组类似于Python中的列表
obj.length //数组的大小 obj.push(ele) //尾部追加元素 obj.pop() //尾部获取一个元素 obj.unshift(ele) //头部插入元素 obj.shift() //头部移除元素 obj.splice(start, deleteCount, value, ...) //插入、删除或替换数组的元素 obj.splice(n,0,val) //指定位置插入元素 obj.splice(n,1,val) //指定位置替换元素 obj.splice(n,1) //指定位置删除元素 obj.slice( ) //切片 obj.reverse( ) //反转 obj.join(sep) //将数组元素连接起来以构建一个字符串 obj.concat(val,val2) //连接数组 obj.sort( ) //对数组元素进行排序
布尔值:布尔类型仅包含真假,与Python不同的是其首字母小写。
1=="1" //执行结果为 true 1==="1" //执行结果为 false ===:不仅比对值是否相等,还比对数据类型是否相等。
- == 比较值相等
- != 不等于
- === 比较值和类型相等
- !=== 不等于
- || 或(or)
- && 且(and)
字典:我理解的就是JSON
json = {"name":"Asktao","age":18}
Javascript循环:
for循环
//数组的方式取值(列表) var names = ["alex", "tony", "rain"]; for(var index in names){console.log(index); //index是索引 console.log(names[index]); //取值 } //字典的方式取值(JSON) var json = {"name":"Asktao","age":18} for(var index in json){console.log(index); //index是key console.log(json[index]); //取值 }
//常规for循环(不支持字典循环) for(var i=0;i<10;i++){console.log(i) }
支持while循环
while(3==2){//while(条件){ //.循环 // } }
Javascript条件语句:
if条件语句:
if(false){//如果条件为真,则执行此处。 }else if(true){//如果条件为真,则执行此处。 }else{//如果以上条件都不满足,则执行此处。 }
switch条件语句:
switch(name){case '1': //如果name=1 age = 123; break; //中断 case '2': //如果name=2 age = 456; break; //中断 default : //name都不满足时,执行此处 age = 777; }
Javascript函数:
普通函数:
//普通函数 function func2(arg){return arg+333; }
匿名函数:
//匿名函数 setInterval(function(){//间隔2秒执行函数 },2000);
自执行函数:创建函数并自动执行(记住()())
//自执行函数 (function(arg){console.log(); })(1);
Javascript序列化:
- JSON.stringify(obj) 将对象转换成字符串
- JSON.parse(str) 将字符串转换成对象
//序列化与反序列化 li = [11,22,33,44,55,66]; //Array [ 11, 22, 33, 44, 55, 66 ] str = JSON.stringify(li); //"[11,22,33,44,55,66]" newLi = JSON.parse(str); //Array [ 11, 22, 33, 44, 55, 66 ]
Javascript转义:
- decodeURI( ) URl中未转义的字符
- decodeURIComponent( ) URI组件中的未转义字符
- encodeURI( ) URI中的转义字符
- encodeURIComponent( ) 转义URI组件中的字符
url = "https://www.baidu.com/s?wd=%E9%9A%8F%E4%BE%BF"; newURL = decodeURI(url); //"https://www.baidu.com/s?wd=随便"; new2URL = encodeURI(newURL); //"https://www.baidu.com/s?wd=%E9%9A%8F%E4%BE%BF" newURL_C = encodeURIComponent(newURL); //"https%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%E9%9A%8F%E4%BE%BF" new2URL_C = decodeURIComponent(new2URL); //"https://www.baidu.com/s?wd=随便";
- escape( ) 对字符串转义
- unescape( ) 给转义字符串解码
- URIError 由URl的编码和解码方法抛出
Javascript-eval:
python:
val = eval(表达式)
exec(执行代码)
JavaScript:
val = eval(表达式和执行代码)
Javascript时间:
now.getXXXX 取得时间
now.setXXXX 设置时间
//Date类 now = new Date(); //获取当前时间 now.getMinutes() //取得时间 now.setMinutes(now.getMinutes()+10) //时间添加十分钟。
Javascript作用域:
- 以函数作为作用域
- 函数的作用域在函数未被调用前,已经创建
- 函数的作用域存在作用域链,并且也是在被调用前创建
- 函数内局部变量提前声明
JavaScript面向对象及原型:
面向对象:
function Foo(n){this.name = n; //this相当于python的self this.sayName = function(){console.log(this.name)} } f = new Foo("ASKTAO"); //创建对象时需要用new (Date类) f.sayName(); //将方法写在函数里会产生重复代码,影响效率。推荐使用原型。
原型:
function Foo(n){this.name = n; } Foo.prototype = { //使用prototype 声明函数就是使用原型的方法。 "sayName" : function(){console.log(this.name)} }; f = new Foo("ASKTAO"); //创建对象时需要用new (Date类) f.sayName(); //使用方法不变
Javascript正则:
test:判断字符串是否符合正则
rep = /^\d+$/; //匹配规则 //test - 判断字符串是否符合规定的正则 rep.test("jfjsadjfjasdf93"); //返回false rep.test("564654564"); //true
exec:获取匹配正则的数据
rep = /\bjava\w+\b/; //匹配规则 //exec - 获取匹配的数据 rep.exec("java1111 java2222 java32333"); //结果:java1111 rep = /\bjava(\w+)\b/; //匹配规则-加括号,则进行二次匹配 //exec - 获取匹配的数据 rep.exec("java1111 java2222 java32333"); //结果:[java1111,1111] rep = /\bjava\w+\b/g; //匹配规则 //exec - 获取匹配的数据 rep.exec("java1111 java2222 java32333"); //结果:java1111 rep.exec("java1111 java2222 java32333"); //结果:java2222 rep.exec("java1111 java2222 java32333"); //结果:java32333 rep.exec("java1111 java2222 java32333"); //结果:null rep = /\bjava(\w+)\b/g; //匹配规则-加括号,则进行二次匹配 //exec - 获取匹配的数据 rep.exec("java1111 java2222 java32333"); //结果:[java1111,1111] rep.exec("java1111 java2222 java32333"); //结果:[java2222,2222] rep.exec("java1111 java2222 java32333"); //结果:[java32333,32333] rep.exec("java1111 java2222 java32333"); //结果:null rep = /^java\w+/gm; //m,多行匹配。配合^或$使用 rep.exec("java1111 java2222 \njava32333"); //结果:java1111 rep.exec("java1111 java2222 \njava32333"); //结果:java32333
其他:
- null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。
- undefined是一个特殊值,表示变量未定义。
转载于:https://my.oschina.net/asktao/blog/877125
【学以致用】JavaScript相关推荐
- [译] 学习 JavaScript:9 个常见错误阻碍你进步
本文讲的是[译] 学习 JavaScript:9 个常见错误阻碍你进步, 原文地址:Learning JavaScript: 9 Common Mistakes That Are Holding Yo ...
- [转][探讨]为什么说JavaScript是性价比最高的技术?
JavaScript可算是世界上最流行的编程语言之一,这个被大量的开发者与设计师随手拈来增强他们的Web前端的脚本语言,如今越来越被重视.JavaScript是一种能让你的网页更加生动活泼的程式语言, ...
- Javascript数组操作
使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...
- 翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 麒麟子Javascript游戏编程零基础教程大纲
大家好,我是麒麟子, 开源项目<幼麟棋牌-四川麻将>(泄漏版叫 <达达麻将>)作者,成都幼麟科技创始人. 开源项目地址(Github与Gitee同步更新): Github ht ...
- JavaScript面向对象实现-坦克大战(附前端全套学习路线)
[课程简介] 使用javascript+面向对象实现一个坦克大战游戏,让更多的同学能更加深入地理解面向对象思想. [主讲内容] 1. 讲解什么是面向对象,javascript中如何实现面向对象 2. ...
- 史上被骂最多的编程语言:JavaScript
点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Sleeping is nice. You forget about eve ...
- JavaScript 原型和原型链及 canvas 验证码实践
前言 最近在复习 JavaScript 基础,因为工作以后基本上没用过,天天都是拿起框架加油干,确实大部分都忘了.到了原型和原型链这一部分,觉得自己理解的比较模糊.又翻阅了<你不知道的 Java ...
- JavaScript面向对象编程-第三版不完全系统解读
JavaScript面向对象编程-第三版不完全系统解读 作者:老九-技术大黍 产品:查看原文 社交:知乎 公众号:老九学堂(新手有福利) 特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者 ...
最新文章
- golang源码分析-启动过程概述
- Xilinx 7系列FPGA介绍
- 美国会议员提出“漏洞披露法案” 仍考虑非中立实体授权
- CF140C-New Year Snowmen【优先队列】
- L2-007. 家庭房产
- html调用js函数_使用Require.js实现模块化开发
- SVD 与 PCA 的直观解释(3): SVD的直观解释及推导
- windows c++版faster-rcnn
- log日志显示与写入文件—qt
- H3C网络流量镜像配置
- Activiti(二)简单请假流程实现
- PCB治具设计、制造和管理
- 腾讯CSIG前端面经全网最全总结
- 逻辑回归模型——股票客户流失预警模型
- Unity使用新输入系统InputSystem制作飞机大战Demo
- JAVA SE基础笔记
- 让iOS开发变得更有效率-分类、工具类
- MyBatis-Plus分页查询(快速上手运用)
- java 矩阵求秩_线性代数精华3——矩阵的初等变换与矩阵的秩
- 字段类型与合理的选择字段类型
热门文章
- 软件测试工程师应该怎样规划自己?成为年薪30W+测试工程师(乾坤未定,皆是黑马)
- Java中的增强for循环和break continue的使用 以及流程控制训练
- 计算机word的常用功能技巧,word一些实用小技巧
- 专业计算机术语中英文对照(二)
- 对c++输入输出的一些封装(bushi)
- 论return 0的高级写法 bushi​​​​​​​)
- 计算机网络 - linux - 配置静态ip地址(NAT模式)
- 成都笔试——PL/SQL准备
- 商务网站建设与维护【3】
- 爬虫读取疫情数据,可根据兴趣进行调整,并邮件形式每天定时发送