作为一个前端工作者,应该了解一些javascript的发展历史,javascript实现及版本等。基本概念包括语法、关键字、变量、数据类型、操作符、语句控制及函数等,它们和我们学习的其它语言C/C++、java、C#等基本上类似,只是存在细微的差别。具体区别及基本学习内容参考JavaScript高级编程相关章节。 
一、基本内容中应该注意的几个地方
1)关于script标签
我们最常用的写法如下:
<script type="text/javascript">
    function(){
        console.log("hello world!");
    }
</script>
 
那么下边这些用法呢?
 
<script type="text/javascript" >
   //<![CDATA[ function(){
        console.log("hello world!");
    }
//]]>
</script>
        在xhtml中,像一些特殊的符号,<> 等等会默认判定为标签,标签后边是不能跟空格的。因此xhtml下要想实现同样的效果,应该转义&lt;,但是这样的代码谁都不想看到。那么可以用CDATA包起来。但是有个特殊的浏览器不支持CDATA怎么办,那就加上//
 
<script type="text/javascript" >
   <!--function(){
        console.log("hello world!");
    }
//-->
</script>
        以上代码是防止一些浏览器不支持javascript(这个顾虑现在基本可以打消了,另外还有个特殊的标签<noscript><p>支持并开启js的浏览器可以看到我</p></noscript>),用html注释的方式包起来,支持js的浏览器会执行。最后一个//防止js执行到-->认为是语法错误
 
<script type="text/javascript" defer="defer">
    function(){
        console.log("hello world!");
    }
</script>
一般用于外部浏览器,defer表示该脚本的执行延迟到整个页面解析完成后再运行,用8个概括就是 立即下载 延迟执行
 
<script type="text/javascript" async>
    function(){
        console.log("hello world!");
    }
</script>
一般用于外部浏览器,顾名思义,不让页面等待脚本的下载,页面的其它部分就可以加载了。
 
        还有建议css代码放到head中,而js代码放到body中的底部。因为html加载是从上往下,如果在body加载之前有很多的脚本需要加载,那么我们用户看到页面空白的时间就会很长。相反,页面展示在用户面前时,用户也不关心还有什么东西没有加载完。这样给用户一个错觉,我们的页面比别人的"快"。那有人就说为了快,怎么不把css文件放到下边?那如果这样做的话,如果页面比较大,样式比较多一开始显示给用户的将会很丑。
 
        在js代码中最好少写 </script>,非要写可以这样 <\/script>,因为当字符中出现</script>,那么html会判断为<script>的结束,后边的代码就不能执行了。
 
在加载js过程中(尤其是js在head中,这样会阻塞UI的加载),不建议动态修改Dom元素,这一点大家可想而知。
 
2)松散型变量和typeof
松散变量的含义就是,变量比较“随意”,可以保存任意的类型。不过我们平时使用时不建议这么用
如:var number=10;
       namber="十";
这样不会报错,但是最好别这样用。
由于变量的这样随意性,因此我们最好通过方法判断该变量当前的类型,typeof很好的解决了这个问题
console.log(typeof "hi jack");//String
console.log(typeof 10);//number
console.log(typeof null);//Object
console.log(typeof message);//undefined
var message="hello jack li";
console.log(typeof message);//hello jack li
3)数据类型中的特殊情况
 
undefied为Undefied类型的值,它只有这一个值。当申明一个值但没有初始化就使用就会报undefined如下:
var message;//其实这里相当于var message=undefined;
console.log(message);//undefined
如果这样呢?
//var error;
console.log(error);//这里会报错,不能执行
更离谱的是如果这样呢?
console.log(typeof error);//undefined 是不是晕了?
总之typeof 可以避免很多无谓的错误。本来上边两种用法都不太推荐。使用变量前 通过typeof判断是个好的习惯,个人理解。
 
Null类型也是只有一个值 null,它是空的对象的指针,因此 typeof null 为Object,同样使用过程中也推荐先判断非空
undefined是派生自null的。因此
console.log(null==undefined);//true
 
Boolean类型也是比较特殊的一个类型
        它只有两个字面量值 true和false,区分大小写,这个在其它语言中也是如此,判断一个变量尤其是前端用户勾选的一些radio或者下拉框中的某个值 和 后台查询出来的值比较,必须 toLowerCase(),统一转化为小写或者大写再比较。
        任何类型的变量都可以转化为Boolean值。利用方法 Boolean(),转换表如下。
类型                             
转换为true的值
转换为false的值
Boolean             
true   
false
String                 
 任何非空字符串
 ""空字符串''也是false 注意没有空格
Number
 任何非0的数字
 0 NaN
Object
任何对象
null
Undefined
n/a
undefined
数值类型和NaN
        整数 浮点数需要注意浮点数的判断 比如if(0.1+0.2==0.3)//永远是false 特定的浮点数计算,最好不要去比较结果,浮点是精度为17
NaN全称是Not a Number。它和任何数的操作结果都是NaN。number/0的结果为NaN。还有一个判断是否为NaN的函数isNaN()
isNaN(100)//false
isNaN(NaN)//true
isNaN("100")//false
isNaN(true)//false
isNaN("message")//true
 
数值转换的一些特殊结果,您掌握多少呢?

Number("Hello jack li");//NaN

 

Number(true);//1

 
Number("000123");//123
一般更常用的是parseInt() parseFloat()
parseInt("123ignore")//123
parseInt("");//NaN
parseInt("0xA");//10
为了消除parseInt("070")//这种转换,我们最好指定第二个参数,明确指出是针对多少进制的转换 parseInt("070",8);//  
parseFloat("123.123.123");//123.123
 
String类型 单引号双引号的含义差不多,但不能交叉嵌套使用
 
var message=null;
var error;
console.log(String(message));//null
console.log(String(error));//undefined
 
Object类型,这个类型比较复杂需要以后单独讲
 
3)操作符
算数操作符,位操作符,关系操作符,相等操作符
 
~按位非
&按位与
|按位或
>>右移 前面保留符号位
<<左移
>>>无符号右移   前面补0
 
相等的特殊情况
null==undefined//true
NaN=="NaN"//false
123==NaN //false
NaN==NaN//false
false==0//true
undefined==0//false
123=="123"//true
 
全等 ===    !==
对比上边的就可以看出===要求更高一些,转换后值相等也不全等。
123==="123"//false
null===undefined//false
 
4)语句控制
需要注意里边的for in 语法就可以了,基本的程序流程控制语句都类似。
 

必须掌握的JavaScript基本知识的更多相关文章

  1. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  2. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  3. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  4. javascript常用知识点集

    javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...

  5. 七个开法者经常忽略或误用的JavaScript基本知识

    七个开法者经常忽略或误用的JavaScript基本知识 翻译自 http://tech.pro/tutorial/1453/7-javascript-basics-many-developers-ar ...

  6. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  7. JavaScript数组知识

    JavaScript数组知识 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  8. JS控制语句 编程练习 学生数据,分别是姓名、性别、年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦。

    编程练习 在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名.性别.年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦. 学生信息如下 ...

  9. AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解

    AST抽象语法树——最基础的javascript重点知识,99%的人根本不了解 javascriptvue-clicommonjswebpackast  阅读约 27 分钟 抽象语法树(AST),是一 ...

  10. javascript常用知识汇总

    javascript这个语言庞大而复杂,我用了三年多了,还是皮毛都不会.从刚开始的jquery,到后来的es6,每天都在学习,每天都在忘记. 1.禁止手机虚拟键盘弹出 在开发适配手机的页面时,出现了这 ...

随机推荐

  1. ubuntu12.04 残疾人游客

    为了防止陌生人登录你的ubuntu系统.例如,下面的方法,可以采用禁用 游客登录. sudo vi /etc/lightdm/lightdm.conf 在 lightdm.conf 文件末尾加入上 a ...

  2. 开源TinyXML 最简单的新手教程

    TinyXML它是基于一个非常受欢迎的现在DOM型号XML解析器,简单易用且小巧玲珑,很适合存储简单数据.配置文件. 该项目属于开源项目,在sourceforge上边的链接是:http://sourc ...

  3. (大数据工程师学习路径)第一步 Linux 基础入门----Linux 下软件安装

    介绍 介绍 Ubuntu 下软件安装的几种方式,及 apt,dpkg 工具的使用. 一.Linux 上的软件安装 通常 Linux 上的软件安装主要有三种方式: 在线安装 从磁盘安装deb软件包 从二 ...

  4. NPOI以及在ASP.NET MVC中的使用

    NPOI以及在ASP.NET MVC中的使用 1.前言 相信大家在工作中经常要遇到一些导入导出Execl操作.学习贵在分享,分享使人快乐,园子里的前辈已经有很多好的文章,鄙人也是能力有限,在这里把这些 ...

  5. 手机号ID开关星号(*)

    .h文件 <span style="font-size:18px;">/** * 转成星号工具 */ @interface AsteriskTool : NSObjec ...

  6. 为什么数据线easy糟糕

    一个好的设计可以帮助解决问题似乎无关紧要豪. 两天前M3数据线被破坏.在弯附近的电话插口可以充电.一松就充不了电了. 今天突然想到每次充电的时候用手机发信息.玩游戏都特别不方便,才想到为什么数据线ea ...

  7. 手机新闻网站,手持移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发

    我们坐在地铁.经常拿出新浪手机查看新闻.腾讯新闻,或者看新闻,等刷微信功能.你有没有想过如何实现这些目标. 移动互联网.更活泼. 由于HTML5未来,jQuery Moblie未来. 今天我用jqm的 ...

  8. crawler_URL编码原理详解

    经常写爬虫的童鞋,难免要处理含有中文的url,大部分时间,都知道url_encode,各个语言也都有支持,今天简单整理下原理,供大家科普 1.特征: 如果URL中含有非ASCII字符的话, 浏览器会对 ...

  9. hardware_hp刀片服务器安装windows 2008系统配置

    2012年10月26日星期五 第一步. 看刀片机柜的后的OA地址 点击 OK 查看 Actlve OA 例如: 192.168.254.31 l 第二步: 连接PC 到左侧第一个接口 修改本机ip为同 ...

  10. 一个JavaWeb项目开发总结

    一.学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml->mvc->db->spring ioc->log->代码 先了解项目数据库的表结构,这 ...