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,一经查实,立即删除!

相关文章

oracle 查询时间点数据_oracle统计时间段内每一天的数据(推荐)

下面给大家介绍oracle统计时间段内每一天的数据&#xff0c;具体sql语句如下所示&#xff1a;1. 生成1000个随机数SELECT ROWNUM RN,DBMS_RANDOM.VALUE(0, 1000) RANDOMFROM DUALCONNECT BY ROWNUM < 1000;注&#xff1a;DBMS_RANDOM.VALUE(A, B)是随机数产生函数, A是区间的…

dubbo服务的运行方式

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

Java读取HTML传人文件,java读取html文件并获取body中所有的标签及内容的案例.pdf

java读读取取html文文件件,并并获获取取body中中所所有有的的标标签签及及内内容容的的案案例例这里的获取的是html文件中body 中的所有标签以及内容package com.lmt.service.file;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import j…

插件translator_Zotero Jasminum 插件的更新记录

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

Tomcat的三个端口

8005 <Server port"8005" shutdown"SHUTDOWN"> 关闭tomcat通信接口 8009 <Connector port"8009" protocol"AJP/1.3" redirectPort"8443"/> 与其他http服务器通信接口&#xff0c;用于http服务器集合 8080…

计算机一级考试word题主要,2017年计算机一级考试word题及答案

1 / 7 2017 年计算机一级考试 及答案 计算机还是人们的学习工具和生活工具。借助家用计算机、个人计算机、计算机网、数据库系统和各种终端设备&#xff0c;那么 2017 年计算机一级考试 及答案有哪一些 ?下面是 才小编收集整理的 2017 年计算机一级考试 及答案&#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;若出现…

extjs中元数据_json – 如何配置ExtJS 4 Store(代理和阅读器)来读取元数据

我的问题是除了totalRecords之外如何获取元数据,在我的例子中它是版本,代码,searchquery(请查看json).{"result": {"version":"1","code":"200","searchquery": "false","totalRecords": &qu…

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

伍德里奇计量经济学第四章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…

2018百度之星程序设计大赛 - 资格赛 1002 子串查询

子串查询 Accepts: 1262 Submissions: 5335 Time Limit: 3500/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem Description 度度熊的字符串课堂开始了&#xff01;要以像度度熊一样的天才为目标&#xff0c;努力奋斗哦&#xff01; 为了检验你是否…

mysql sleep详解_MySQL中sleep函数的特殊现象示例详解

前言MySQL中的系统函数sleep&#xff0c;实际应用的场景不多&#xff0c;一般用来做实验测试&#xff0c;昨天在测试的时候&#xff0c;意外发现sleep函数的一个特殊现象。如果在查询语句中使用sleep函数&#xff0c;那么休眠的时间跟返回的记录有关。如下测试所示&#xff1a;…

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

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

计算机网络安全应具备的功能,2016计算机专业知识:网络系统安全体系具备功能攻击方法...

【导读】为了帮助广大考生更好的备考&#xff0c;中公事业单位考试网提供2016年计算机专业知识《网络系统安全体系具备功能攻击方法》学习&#xff0c;为考生定制计算机基础知识复习计划。一、网络系统安全体系具备功能1.访问控制;2.检查安全漏洞;3.攻击监控;4.加密通讯;5.认证…

Linux的标准I/O和管道

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

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

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

软件测试员对英语,软件测试工程师英语面试题

以下是软件测试工程师部分英语面试中的参考回答&#xff0c;仅提参考&#xff1a;Interview English&#xff1a;一&#xff0c;Why are you interested in working for our company?1。Because your company has a good sales record.2。Because your operations are global,…

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;结果总是不甚如意。 烦躁了&…

清华大学计算机系主任应明生,清华大学计算机科学与技术系导师简介:应明生...

对考生而言&#xff0c;充分了解高校、专业以及师资情况是一项最基础、最关键的工作。以下是中公考研小编为大家整理的“清华大学计算机科学与技术系导师简介&#xff1a;应明生”的相关信息&#xff0c;希望对同学们有所帮助。姓名&#xff1a;应明生职称&#xff1a;教授邮件…

在VS2013平台下如何快速解决c++代码内存泄漏问题

在学习FPS3000人脸关键点定位算法时&#xff0c;发现github上的源码&#xff0c;存在大量的内存泄漏问题&#xff0c;在训练的时发现内存一直在增长&#xff0c;测试的时候也存在内存无法彻底释放的问题。 一直以为是存放模型参数vector<class>结构的问题&#xff0c; 采…