JavaScript学习(一)——基础知识查漏补缺
标签script
我们知道,html要使用js就要使用
<script>
标签。
两种方式:
一是直接在<script>
这里</script>
写入代码。
二是在别的文件写好js代码,然后script标签的src属性引入进来。
script其实有6个属性(全都是可选):
- src:包含要执行代码的外部文件;
- language:现在已废弃;
- type:表示编写代码使用的脚本语言的内容类型;
- charset:指定src引入代码的字符集;
- async:表示应该立即下载脚本;
defer:表示脚本可以延迟到文档完全被解析和显示后再执行。
type的解释也说明了一个问题,
<script></script>
中间的代码不必需是js代码。如果不声明,则默认为text/javascript,此时代码按照js的规则解析。如果声明了其他的不可识别的类型,则它和其中的内容会被忽略掉。
例如:<script type='text/html' id="tpl"></script>
<script type='text/foo-template' id="foo-tpl"></script>
有些模板引擎就利用了它来实现DOM节点的模板填充。
注意:<script><script>
中间不要在任何地方出现'</script>
'字符串
关键字,保留字
以前只记住了几个关键字,现在还注意到了保留字,保留字就是在js当中其实没啥用的但是就是不给用来当做命名的单词,多为Java语言的关键字。
数据类型
typeof操作符,可以判断某值的数据类型。我们都知道,一共六种。
1、undefined
2、boolean
3、string
4、number
5、function
6、object
undefined与null
undefined 指变量尚未初始化
null 指变量值为一个空对象指针
其实它们的意思和用法基本都是一致的,在js里,我们完全可以只用undefined而不去使用null,这样混不混淆都无所谓了。
唯一的区别:
console.log(typeof undefined)--undefined
console.log(typeof null)--object
阮一锋的解释:
null表示"没有对象",即该处不应该有值。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype)
// null
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
var i;
i // undefined
function f(x){console.log(x)}
f() // undefined
var o = new Object();
o.p // undefined
var x = f();
x // undefined
number
转换数值的三个方法:
Number(),parseInt(),pasreFloat()
Number()功能比较强大,规则如下:
true:1
false:0
null:0
undefined:NaN
"":0
"011":11(忽略前面的0)
"011.1":11.1(忽略前面的0)
"0x11":17(0x开头十六进制)
"别的格式的字符":NaN
parseInt()规则如下:
仅转换字符串,其他非数字类型统一返回NaN
"":NaN
"011":11(忽略前面的0)
"011.1":11(忽略前面的0)
"0x11":17
"123abc":123
"abc123":NaN
parseFloat()规则如下:
仅转换字符串,其他非数字类型统一返回NaN
"":NaN
"011":11(忽略前面的0)
"011.1":11(忽略前面的0)
"0x11":0(忽略前面的0)
"123abc":123
"abc123":NaN
整数还可以通过二进制,八进制,十六进制来表示。
其中,八进制字面值的第一位必须是0
十六进制字面值的前两位必须是0x
我们从字符串转过来的时候如果有要求则要再传一位进制数:
parseInt("011",2):3
parseInt("011",8):9
parseInt("011",16):17
parseInt("0xaa",16):170
parseInt("aa",16):170
注意:程序在计算的时候0开头的数字会被解析为八进制,0x开头的数字会被解析为十六进制。最终结果为十进制。因此,我们做计算的时候最好不要用带0开头的数字进行计算,避免让别人看迷糊。
等号
一个等号:赋值
两个等号:判断相等
三个等号:判断全等
一、赋值问题
在echarts.js源码中看到了一句:
var ecModel = this._model = new GlobalModel(null, null, theme$$1, optionManager);
其中连续赋值了两次,后来查阅资料,发现执行过程是这样的:
1、var ecModel =new GlobalModel(null, null, theme$$1, optionManager);
2、this._model = new GlobalModel(null, null, theme$$1, optionManager);
连续多个赋值操作,可从左到右拆分成每个变量直接等于最后的值,而不会执行像var ecModel = this._model这样的语句。
其实不推荐这样写,这种写法能避开就避开呗。
二、关于 ==
== 和 != 会先转换再比较
比较规则:
1、一个布尔值,一个数字 true:1,false:0
2、一个字符串,一个数字 先转成数字
3、一个对象,一个数字 先调用对象的valueOf()再按前面的规则
4、两个对象 比较是否同一个对象
例: var a={},b={}; console.log(a==b);//false
5、null==undefined true
6、NaN==NaN false
label 语句
label语句可以在代码中添加标签,以便将来使用。一般与循环语句的break和continue配合使用。
举个例子:
我有一个嵌套循环,当满足条件的时候执行语句并跳出外层循环。
var num=0;
firstfor:
for(var i=0;i<10;i++){
secondfor:
for(var j=0;j<10;j++){
if(i==5 && j==5){
break firstfor;//跳出第一个for循环
}
num++;
}
}
alert(num); //num=55
重载
js没有重载!
重载只在java里只说过,js没听说过。
然而百度到的全都是js实现重载的方法。
我的疑问(等待回答):
既然js都不支持重载了,为什么还要特意去模仿实现重载呢?
JavaScript学习(一)——基础知识查漏补缺的更多相关文章
- Go语言知识查漏补缺|基本数据类型
前言 学习Go半年之后,我决定重新开始阅读<The Go Programing Language>,对书中涉及重点进行全面讲解,这是Go语言知识查漏补缺系列的文章第二篇,前一篇文章则对应书 ...
- 《CSS权威指南》基础复习+查漏补缺
前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...
- Java基础知识查漏 一
Java基础知识查漏 一 Jdk和jre Jdk是java程序设计师的开发工具,只要包含编译程序,jvm和java函数库 Jre中只有jvm和java函数库,没有编译程序的相关工具,适合只运行不撰写j ...
- java基础知识查漏 二
一.java基本数据类型所占的内存大小 在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符 单元的字符类型和1种用于表示真值的boolean类型.( ...
- java基础知识查漏 四
1.JAVA多线程实现方式 (1)继承Thread类,并重写run()方法 (2)实现Runnable接口,,实现run()方法 (3)使用ExecutorService.Callable.Futur ...
- java基础知识查漏 三
一.Servlet 和Jsp的生命周期 1.Servlet生命周期 Servlet是运行在Servlet容器(有时候也叫Servlet引擎,是web服务器和应用程序服务器的一部分,用于在发 ...
- java知识查漏补缺
一.重写(override)和重载(overload)的区别 二者除了名字相似,其实没什么联系 范围不同:重载发生在同一个类的不同方法之间.重写发生在父类和子类自荐. 前提: 重载要求:方法名相同,参 ...
- Flutter查漏补缺1
Flutter 基础知识查漏补缺 Hot reload原理 热重载分为这几个步骤 扫描项目改动:检查是否有新增,删除或者改动,直到找到上次编译后发生改变的dart代码 增量编译:找到改变的dart代码 ...
- js基础查漏补缺(更新)
js基础查漏补缺: 1. NaN != NaN: 复制数组可以用slice: 数组的sort.reverse等方法都会改变自身: Map是一组键值对的结构,Set是key的集合: Array.Map. ...
随机推荐
- spring boot开启事务管理,使用事务的回滚机制,使两条插入语句一致
spring boot 事务管理,使用事务的回滚机制 1:配置事务管理 在springboot 启动类中添加 @EnableTransactionManagement //开启事务管理 @Enable ...
- Selenium之IE浏览器的启动问题及解决
前面有篇文章说到启动IE浏览器时,会出现以下错误提示: 浏览器启动之后,页面不会自动输入代码设置的地址,如下图展示 查看报错语句,发现原来是浏览器比例调的不正确,修改浏览器比例为100%即可解决该问题
- (ZT)谷歌大脑科学家 Caffe缔造者 贾扬清 微信讲座完整版
一.讲座正文:大家好!我是贾扬清,目前在Google Brain,今天有幸受雷鸣师兄邀请来和大家聊聊Caffe.没有太多准备,所以讲的不好的地方还请大家谅解.我用的ppt基本上和我们在CVPR上要做的 ...
- python连接mysql,redis类方法
#coding:utf8 import pymysql import redis import conf '''MYSQL DB Object''' class Mysql(): def __init ...
- 20155316 2016-2017-2 《Java程序设计》第8周学习总结
教材学习内容总结 课堂部分要点 数据结构与算法 与 Java相结合 collection API:数据结构 crypt:密码学 操作系统 考试部分重点 实验楼:Linux第四节 教材:第6章.第14章 ...
- bzoj1607 / P2926 [USACO08DEC]拍头Patting Heads
P2926 [USACO08DEC]拍头Patting Heads 把求约数转化为求倍数. 累计每个数出现的个数,然后枚举倍数累加答案. #include<iostream> #inclu ...
- chrome不能安装adblock插件
csdn简直就是个垃圾,名字山寨MSDN不说,一个页面数还十个广告.国人还这么多人捧,真是醉了.博客的话还是博客园,简洁,一切为了技术. 既然csdn是个垃圾,那么看部分文章时怎么少得了广告屏蔽插件a ...
- linux及安全《Linux内核设计与实现》第三章——20135227黄晓妍
第三章 (由于linux不区分进程和线程,所以它们在linux中被称为task,也叫任务) 总结:本章主要包括进程以及线程的概念和定义,Linux内核如何管理每个进程,他们在内核中如何被列举,如何创建 ...
- 20145204《Java程序设计》第5周学习总结
20145204<Java程序设计>第5周学习总结 教材学习内容总结 语法与继承构架 我们之前接触到的C通常都是将程序流程和错误处理混在一起,在编写程序的时候必须考虑可能出现的错误并提前做 ...
- 20145204《Java程序设计》第3周学习总结
20145204<Java程序设计>第3周学习总结 教材学习内容总结 对象和类. Java有基本类型和类类型这两个类型系统.本章主要介绍类类型.定义类时用关键词class,利用类建立对象实 ...