深入js之基本语法
周末正好有空就研究了下汤姆大叔的js系列博客,虽然只是学到点皮毛,依然获益匪浅。不得不说大牛的境界岂是吾等小辈可理解。
变量:
js有隐含的全局概念,意味着不声明的所有变量都是全局对象的属性。
function sum(x,y){
var res = x + y;
return res;
}
以上隐式声明全局变量的做法会多出一个全局命名空间,这显然不是我们想要的。
function sum(x, y) {
var res= x + y;
return res;
}
所以记住始终使用var声明变量。
funtion num(){
var a = b = 0;
}
以上链式声明变量依然是隐式声明全局变量。有朋友可能会疑惑,在局部里声明的变量怎么就变全局变量了!
但结果就是:a是局部变量,b是全局变量。
这是因为这个从右到左的赋值,首先是赋值表达式b = 0,但b没有声明,自然b就成全局变量了;然后再把0返回给声明了的a。这跟如下的代码同理:
function num(){
var a = {b = 0};
}
所以一次先声明所有需要声明的变量是比较好的习惯,并且在函数的顶部使用链式分配会更加容易阅读与修改:
function(){
var a,b;
}
var的另一个比较少用一点的就是:
用var声明的全局变量是不能被delete删除的;而没用var声明的全局变量是能被delete删除。
// 反例
myname = "global"; // 全局变量
function func() {
alert(myname); // "undefined"
var myname = "local";
alert(myname); // "local"
}
func();
这是一个比较少注意到的问题,就是var声明不是放在函数顶部所造成的未定义。你可能会以为第一次弹窗会弹出'global',其实是undefined。
原因是myname被当做了局部变量,而第一个alert时该变量还未声明。等同于以下代码:
myname = "global"; // global variable
function func() {
var myname; // 等同于 -> var myname = undefined;
alert(myname); // "undefined"
myname = "local";
alert(myname); // "local"}
func();
顺便提一下代码是怎么处理的:第一阶段是解析变量以及函数和参数等,第二阶段才是执行代码。
for循环:
平常我们使用for循环一般是如下形式:
for(var i=0 i<arr.length; i++){
console.log(arr[i]);
}
但更好的办法是先缓存集合或者数组的长度:
var i,arrLen;
for(i=0,arrLen=arr.length;i<arrLen;i++){
...
}
还可以进一步优化的部分就是用i--代替i++,原因是向下数到0通常会更快:
var i;
for(i=arr.length;i--;){
...
}
或者是使用while:
var i = arr.length;
while(i--){
...
}
这些优化只会体现在性能上,实际项目中才能体现威力。
深入js之基本语法的更多相关文章
- 在MyEclipse中如何去掉JS或jsp语法错误提示!
在MyEclipse中如何去掉JS或jsp语法错误提示! 关于在 MyEclipse 上 WEB 工程里面的 JS/JSP 经常会有语法错误提示,这是由于 MyEclipse 对其语法要求相当严格所造 ...
- 【每天半小时学框架】——React.js的模板语法与组件概念
[重点提前说:组件化与虚拟DOM是React.js的核心理念!] 先抛出一个论题:在React.js中,JSX语法提倡将 HTML 和 CSS 全都写入到JavaScrip ...
- 基础常用JS函数和语法
100多个基础常用JS函数和语法集合大全 来源:http://www.cnblogs.com/hnyei/p/4605103.html 网站特效离不开脚本,javascript是最常用的脚本语言,我 ...
- Vue.js:模版语法
ylbtech-Vue.js:模版语法 1.返回顶部 1. Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vu ...
- 100多个基础常用JS函数和语法集合大全
网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...
- 什么是js和js的基本语法
时间:2016年12月15日 先讲讲基础语法: 大部分是来操作表单: js动态效果和数据交互(ajax?) js也有自己的API js大部分的DOM操作都是针对input的. 案例学习,对注册页面的简 ...
- 梳理一下JS的基本语法
web三层结构来说 结构层:HTML 从语义角度,描述页面结构 样式层:CSS 从审美的角度,美化页面 行为层:JavaScript 从交互的角度,提升用户体验 ...
- [JS] javascript基础语法
W3CSchool全套Web开发手册:点击下载 1.javascript是什么 js是具有面向对象能力的,解释性的程序设计语言. 2.js的类型 [基本类型]:string number boolea ...
- 常用原生JS函数和语法集合
luoyishan-2017-10-08 1. 输出语句:document.write(""); 2. JS中的注释为// 3. 传统的HTML文档顺序是:document-> ...
- JavaScript(JS)基本语法(一)
https://www.cnblogs.com/haiyan123/p/7577598.html 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入 ...
随机推荐
- pycharm中安装可以贴图片的Markdown插件
方法一:(测试成功) 先安装官方推荐的Markdown support插件,再安装Paste images into MarkDown 如果Paste images into MarkDown插件在线 ...
- C# 加载配置文件
//加载配置文件 var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .Add ...
- docker-compose 部署 Redis
信息: Docker版本($ docker --version):Docker版本18.06.1-ce,版本e68fc7a 系统信息($ cat /etc/centos-release):CentOS ...
- This InfoPath form template is browser-compatible, but it cannot be browser-enabled on the selected site
- all features were running on sitecollection level and at site level But here is the solution, i do ...
- Codeforces Gym 100513F F. Ilya Muromets 水题
F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...
- ClamAV学习【4】——cli_magic_scandesc函数浏览
今晚继续浏览ClamAV代码,挖掘到了cli_magic_scandesc函数,发现前面包装了很多次扫描函数,这里就是最后一层的感觉.一些扫描限制判断加上文件类型判断,采用不同扫描函数处理. (PS: ...
- 375. 猜数字大小 II leetcode java
题目: 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字. 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了. 然而,当你猜了数字 x 并且猜错 ...
- PHP set_error_handler()函数的使用
我们写程序,难免会有问题(是经常会遇到问题 ),而PHP遇到错误时,就会给出出错脚本的位置.行数和原因.有很多人说,这并没有什么大不了.确实,在调试程序阶段,这确实是没啥的,而且我认为给出错误路径是必 ...
- 【Oracle 12c】CUUG OCP认证071考试原题解析(32)
32.choose the best answer View the Exhibit and examine the data in EMP and DEPT tables. In the DEPT ...
- 深度解析CNN
[1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之:CNN卷积神经网络推导和实现 [4]Deep Learning模型之:CNN的反 ...