Js中的基本概念

前言:刚毕业的应届生,学习前端时间并不长,昨天参加面试,一轮笔试,两轮技术面试。尤其在技术面试的时候感觉到自己基础知识还是搞的有些乱,也突然明白到了一个扎实的Js基础对于之后的路是有多重要。准备把Js高级程序设计的重点知识从头梳理一遍。特此记录一下自己学习的一些自认为比较重要的笔记。看似最难走的路,可能却是最快也是最稳的。

1.严格模式

是ECMAScript5引入的一个概念。目的是使Ecma3中的不确定行为得到处理,一些不安全的行为也会抛出错误。它的支持版本比较高,IE10+

2.标识符

就是函数、变量、属性的名字。标识符不能用保留字和关键字,使用关键字会导致identitierExpected错误,保留字看特定引擎报错

3.变量

Js变量是松散类型的,可以用来保存任何类型的数据。

如果变量定义在函数中,那么这个变量在函数退出后就会被销毁。
e.g.

   function test() {var msg = 'hi';}console.log(msg) // 报错

检查一个错误:
报错message未定义,为什么呢?
答:因为没执行啊

4.数据类型

ECMA中一共有5种简单数据类型(基本数据类型)数据类型:undefined null boolean string number,1种复杂数据类型:Object

  • Null : 就记住他叫空对象指针就行,所以typeof 是 Object。在定义一个暂时不用的对象变量时候,最好将这个变量赋值为null,体现出了它的概念特性,也区分了它和undefined的不同。
  • Boolean:if这种流控制语句,会自动将括号里的内容进行Boolean()操作
  • Number: NAN 表示应该返回数值的操作最后没有返回数值,比如说2/'i',2/0不是NAN,是Infinity。第二点:NAN与任何值都不相等, 包括NAN。有一个函数isNaN(),这个函数的具体思路为:先看能不能转化成数值(10,'10',Boolean),如果能则返回flase,不能的话返回true。理解number和parseInt的区别:parseInt('')是NAN,而Number是0;parseInt遇上非数字字符会停止,而Number直接NAN,比如小数点
  • String:数值,布尔值,对象,和字符串都有toString()方法。只有number下的toString方法有第二个参数,表示转化成几进制后的值,其实有个String()方法更好一些,如果是null返回null,如果是undefined返回undefined,如果不是这两个将默认使用toString()方法;另外一个小技巧,把某个值转化为字符串直接用+""就可以了
  • Object:Object每个实例都存在一些属性和方法:constructor,hasOwnproperty,toString …

5.操作符

  • 一元操作符(++,--,+,-)

    1. 如果对于字符串进行操作,会返回NAN
    2. s1 = +s1 ->相当于把s1转化成数值型(前提看s1之前是什么类型,规则不同)
    3. s1 = -s1 ->相当于把s1转化成数值的同时变成了负值
  • 位操作符

    1. 按位非(~)
      var num1 = 25;
      var num2 = ~num1
    2. 按位或(|)
    3. 按位与(&)
    4. 按位异或(^)
  • 逻辑操作符:逻辑操作符都是短路操作,如果第一个操作能决定结果,就不执行第二个操作
  • 加减法操作符

    • 注意以下问题:"a:"+1+2 //应该输出a12而不是a3
    • var result1 = 5 - "true" //4
    • Var result2 = NaN -1 //NaN
    • Var result3 = 3 - "" // 3
    • Var result4 = 3 - "2" // 1
  • 关系操作符:

    • 如果在关系操作符比较中,有一个值是数值,那么另一个值也会被强制转换成数值,如:

      • Var result = ‘23’ < 3 //true var result = ’23’ < ‘3’ //false
    • 任何操作数与NaN比较都是false

      • Var result1 = NaN < 3 //false
      • Var result2 = NaN >= 3 //false
  • 相等操作符

    • ==和!=是先进行转换再比较
    • ===和!==是不转换直接进行比较
    • 所以由于相等(== !=)存在数据类型的转换问题,为了保持代码类型的严谨性最好用 ===,还有一个细节,如果用相等符号进行比较,虽然比较的过程中可能会进行类型的转换,但不影响最终的变量类型e.g:
    var strEg = '1';
    if(strEg == 1){
    console.log(typeof strEg)  // string
    }
    console.log(typeof strEg)  // string

6.语句

1.label,continue和break
break是立即退出当前层的循环,continue是重新开始下一层的循环,开始下一层的循环,例子

var num = 0;
for(var i=0;i<10;i++) {for(var j=0;j<10;j++) {if(i == 5 && j == 5) {break; //TODO:95// continue; //99}num ++}
}

label和continue,break连用,可以起到在那层退出(break)或在那层强制执行下次循环(continute)作用,例如

var num = 0;
Outermost:
for(var i=0;i<10;i++) {for(var j=0;j<10;j++) {if(i == 5 && j == 5) {break Outermost; }num ++ // 55}
}var num = 0;
Outermost:
for(var i=0;i<10;i++) {for(var j=0;j<10;j++) {if(i == 5 && j == 5) {continue Outermost; }num ++ // 95}
}

2.with语句
会导致性能下降,一般不用。为什么不能直接用对象代替呢?

3.switch语句

switch语句中的条件判断是全等操作,没有类型转换的操作。

7.函数

1.Return:只能用于函数中,立即退出函数并返回值。不能用在if,for的代码块中。如果return的值为空,则立即停止执行函数,并返回undefined
2.传递的参数和arguments并不是同一个内存空间,只是他们的值是同步的,同时argument的长度是由执行时传入的参数决定的,而不是定义时决定的。
3.没有重载

这篇只是一些简单的基础知识点,之后会把这些细小知识点分别展开写成文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dubbo服务的运行方式

1、使用Servlet容器运行&#xff08;Tomcat、Jetty等&#xff09;----不可取 缺点&#xff1a;增加复杂性&#xff08;端口、管理&#xff09; 浪费资源&#xff08;内存&#xff09; 假设1个服务模块时&#xff0c;需要1台tomcat&#xff0c;消耗3个端口&#xff0c;和200M…

插件translator_Zotero Jasminum 插件的更新记录

Jasminum 插件发布后 林知&#xff1a;简单的Zotero CNKI 中文插件​zhuanlan.zhihu.com受到一些同学的关注&#xff0c;同时也收到许多反馈。我写这个插件的初衷就是想让大家在Zotero上能更方便的使用知网&#xff0c;尤其是人文社科相关专业的同学&#xff0c;他们尤其依赖中…

ubuntu18.04 用xhell连接失败

ifconfig命令有用之后&#xff0c;又发现xhell连接不上ubuntu18.04版本的虚拟机&#xff0c;原因是ubuntu18.04默认没有安装ssh服务。 使用以下命令安装 sudo apt-get install openssh-server 安装完成后,启动ssh服务 sudo /etc/init.d/ssh start 查看ssh进程&#xff0c;若出现…

伍德里奇计量经济学第五版第四章计算机操作,伍德里奇计量经济学第四章

伍德里奇计量经济学第四章2016年10⽉25⽇ 星期⼆ 下午10:21 Page 1User: ⺩建英name: log: /Users/wangjianying/Desktop/Chapter 4 Computer exercise.smcllog type: smclopened on: 25 Oct 2016, 22:20:411. do "/var/folders/qt/0wzmrhfd3rb93j2h5hhtcwqr0000gn/T//SD1…

使用maven构建dubbo服务的可执行jar包

maven 项目结构 <build><!-- 使用dubbo推荐的方法&#xff0c;打包成jar&#xff0c;调用main方法启动 --><finalName>admin-service-user</finalName><resources><resource><targetPath>${project.build.directory}/classes</ta…

Linux的标准I/O和管道

标准输入输出与管道 1、标准输入和输出程序&#xff1a;指令数据指令&#xff1a;计算、加减乘除数据&#xff1a;输入数据、输出数据2、在Linux中每一个打开的文件都会分配一个当前进程中唯一的文件描述符&#xff0c;用来标识文件的状态fd:file descripor3、Linux提供给程序…

页面url带参数_微信小程序云开发教程微信小程序的JS高级页面间数据传递

同学们大家好&#xff0c;我是小伊同学&#xff0c;上一节课我们讲解了全局数据的读写方法&#xff0c;那么在页面间同样需要数据交互&#xff0c;今天我们就来学习这部分内容。在微信小程序中&#xff0c;我们常常需要将数据在页面之间进行传递&#xff0c;比如用户的身份信息…

OpenGL——二维几何变换

平移、旋转、缩放的实现 #include<iostream> #include <math.h> #include<Windows.h> #include <GL/glut.h>using namespace std;GLsizei winWidth 600, winHeight 600;GLfloat xwcMin 0.0, xwcMax 225.0; GLfloat ywcMin 0.0, ywcMax 225.0;cla…

在Eclipse 中打开当前文件夹

原文连接&#xff1a;https://www.cnblogs.com/panie2015/p/5985053.html ------------------------------------------------------------------------ 最近试过好多次&#xff0c;安装插件来 在Eclipse 中打开当前文件所在文件夹&#xff0c;结果总是不甚如意。 烦躁了&…

服务器应用日志清理,Linux下Tomcat日志定期清理

服务器上的tomcat的catalina.out文件越来越大&#xff0c;查看起来很不方便&#xff0c;以前每次都是想起来的时候手工清理一下(cat /dev/null > catalina.out)&#xff0c;后来发现了logratate这个工具&#xff0c;Ubuntu下的mysql,nginx好像也是用的这个工具还定期整理log…

dubbo简易监控中心安装

dubbo简易监控中心也是dubbo服务应用。 为什么叫“简易”&#xff1f;这是阿里巴巴定义的&#xff0c;意思是功能不多但够用&#xff0c;可以自己扩展。 1、下载dubbo源码&#xff0c;要与使用的dubbo版本一致。 https://github.com/alibaba/dubbo/releases 2、maven instal…

前端架构设计1:代码核心

现在的前端领域, 随着JS框架, UI框架和各种库的丰富, 前端架构也变得十分的重要. 如果一个大型项目没有合理的前端架构设计, 那么前端代码可能因为不同的开发人员随意的引入各种库和UI框架, 导致代码量变得异常臃肿, 最终结果可能是代码变得无法维护, 页面性能低下,不得已只能推…

如何用法向量求点到平面距离_支持向量机(SVM)

最近完成的一个项目用到了SVM&#xff0c;之前也一直有听说支持向量机&#xff0c;知道它是机器学习中一种非常厉害的算法。利用将近一个星期的时间学习了一下支持向量机&#xff0c;把原理推了一遍&#xff0c;感觉支持向量机确实挺厉害的&#xff0c;尤其是核函数变换可以把一…

TortoiseSVN 1.9.5安装 与 Eclipse4.4.2中安装SVN插件 图解详解

原文链接&#xff1a;http://blog.csdn.net/chenchunlin526/article/details/54631458 Eclipse svn 插件官网&#xff1a;http://subclipse.tigris.org/ Eclipse svn 插件更新网站&#xff1a;https://github.com/subclipse/subclipse/wiki -------------------------------…

虚拟服务器关机返回用户信息,在Linux服务器关机前向用户显示一条自定义消息...

在先前的文┞仿中&#xff0c;我们说清楚明了 Linux 中 shutdown、poweroff、halt、reboot 敕令的不合之处&#xff0c;并揭示了在用不合的选项履行这些敕令时它们实际做了什么。# shutdown 13:25本篇将会向你展示如安在体系关机时向所有的体系用户发送一条自定义的消息。建议浏…

eclipse svn不能忽略文件及文件夹,ignore设置无效 ?

SVN这块做得不好&#xff0c;如果之前提交过此文件&#xff0c;就不能设置忽略该文件了。所以第一次提交的时候要搞清楚再提交。 【 亲测&#xff0c;的确如此&#xff0c;用 Windows -> Preferences -> Team -> Ignored Resources 方法不行。 项目右键--team--设置…

Sonatype Nexus 库被删除的恢复方法

原文连接&#xff1a;https://my.oschina.net/u/178116/blog/519840 --------------------有道云笔记保存---------------------------------------------- 今天在整理公司Maven私服的时候&#xff0c;不小心把Release库删掉了。瞬间冒出冷汗来了&#xff01;公司所有的积累都…

maven私有库配置

不同的项目&#xff0c;不同的私有库1、添加仓库Release 发布&#xff1b; 发行仓库snapshot 快照&#xff0c;开发&#xff0c;调试仓库配置完成2、配置权限默认开通的权限&#xff0c;查看权限给刚才建的两个私有库添加权限配置好后3、创建角色&#xff0c;分配权限添加rolei…

asc desc排序_21.数据库排序?左连接 ?右连接?

更多内容来源&#xff1a;http://mp.weixin.qq.com/mp/homepage?__bizMzA5OTQ1ODE1NQ&hid6&sn843337a7d9931839214ec8f861ac2164&scene18#wechat_redirect1、数据库排序语法 select column_name,column_name from table_name order by column_name,column_name as…

京东ajax怎么用,使用Ajax、json实现京东购物车结算界面的数据交互实例

全选商品单价数量小计操作全选删除选中产品总价&#xff1a;&#xffe5;0body,html,ul,li,a{margin:0;padding:0;font-family:"microsoft yahei";list-style:none;text-decoration:none;}.fl{float:left;}.fr{float:right;}.f12{font-size:12px;}.disl{display:inli…