函数和变量重名始终是一个令人头痛的问题,先讲变量吧,相信了解JS的朋友都知道,在JS中 是没有块级作用域的只有函数作用域,也就是说那些以大括号为界定符的代码块是管不住其中定义 的变量的作用域的,举例: 1 { 2 var num = 110; 3 } 4 console.log(num);//打印结果:110,而不是num is not defined 1 for(var j = 0; j < 5; j++); 2 console.log(j);//结果:5 怎么解决? 一般来说有经验的程序员会…
命名空间 封闭空间 js模块化mvc(数据层.表现层.控制层) seajs 变量转换成对象的属性 对象化…
命名空间 封闭空间 js模块化mvc(数据层.表现层.控制层) seajs(如果了解的呢,可以说) 变量转换成对象的属性 对象化…
<script type="text/javascript"> function fun(a){ console.log(a); // function var a=11; function a(){ return 22; } console.log(a); } fun(33); </script> 问题1:为什么第1个会输出 function呢,为什么不是实参33呢? 问题2:函数内部变量和函数在”预编译“的时候究竟是怎么样的呢? 问题3:var a=11;这…
有时候,xcode报错看不到,点最后一个按钮,类似气泡的就能看到 报错信息: duplicate symbol _imgNummmm in:    /Users/mianmian/Library/Developer/Xcode/DerivedData/Hopa-eoovygqexylwftalhofmgorgetlw/Build/Intermediates.noindex/Hopa.build/Debug-iphoneos/Hopa.build/Objects-normal/arm64/HPEm…
with类中的变量和外部变量如果重名,会将外部变量覆盖,这点需要注意!!!!!…
使用背景: 需要在其他JavaScript文件中调用AngularJS内部方法或改变$scope变量,同时还要保持双向数据绑定: 首先获取AngularJS application: 方法一:通过controller来获取app var appElement = document.querySelector('[ng-controller=mainController]'); 然后在获取$scope变量: var $scope = angular.element(appElement).scop…
首先如果定义的属性名与该属性对应的操作方法操作的实例对象同名就会触发无穷的递归调用,相关部分请参考<Python案例详解:使用property函数定义与实例变量同名的属性会怎样?> 但如果定义为另一个不同的实例变量名相同的名字呢?我们看案例: >>> class Rectangle(): def __init__(self,length,width): self.width,self.__length = width,length def setLen(self,length…
在c语言中,变量有全局变量和局部变量之分,这一点和很多高级语言类似,如c#,java等.不过与c#,java中的局部变量如在全局变量作用域内则不允许与全局变量名相同,而c语言是允许这样做的.这样的做法极不提倡,但是c语言既然允许这么做,就分析一下其变量名相同时在不同位置调用该变量名时所实际调用的是哪个变量值. 代码如下: #include <stdio.h> //全局变量 //作用域:从定义开始到文件结束 //默认初始值为0 int c = 1; int test() { int c = 2;…
写了个很简单的脚本,执行结果却很奇怪.   1 #!/bin/bash PATH=$HOME/vlc_transplant4 rm -f $PATH/vlc ln -s $PATH/bin/vlc-static $PATH/vlc 执行结果: zlf@ubuntu:~/vlc_transplant4$ ./update.sh ./update.: rm: 未找到命令 ./update.: ln: 未找到命令 原因是自己在脚本中定义的PATH变量把系统变量PATH给替代了,脚本原本根据系统变量PA…
请看下面的两段代码: #include <iostream>#include <cstdio>#include <cstring> using namespace std; int main(){    int n;    n = 10;    for(int i = 1; i < 2 ; i++)    {        int n;        n = 5;        cout << n << endl;    }    cout…
前言 第二章主要讲解各种变量作用域,通过这章的学习,接触到了很多之前没有接触过的东西,比如不经常用到的eval,命名函数表达式,with语句块等,下面是一个列表,我对各节的一点点个人总结,很多都是自己的收获和认识.可能有很多认识的误区,毕竟水平有限.如果有那里认识不对的地方,还希望可以在评论中指出来,这样可以得到大家在学习的帮助,也是很不错的. 第8条:尽量少用全局对象 个人总结: 解释全局对象在JS中定义的随意性,导致所有人都可以去定义去修改,导致命名冲突.对这样的全局对象进行依赖,导致不可知…
目录:  typeof, null, undefined, valueOf() 类型转换 正则表达式 错误: try, catch, throw 调试工具 变量提升 strict 严格模式 使用误区 表单 & 表单验证 JavaScript void typeof, null, undefined, valueOf() typeof:用于检测变量的数据类型,eg: typeof "John"; // 返回 string 在 JavaScript 中有 5 种不同的数据类型:st…
作用域访问权限: 程序实体访问权限(作用域)有三种:1. 包级私有(代码包)2. 模块级私有(代码包)3. 公开(全域). 一个函数是一个代码块.一个程序实体的作用域总是会被限制在某个代码块中.好处:控制访问权限, 对“高内聚,低耦合”思想的实践. 面试题:如果一个变量与其外层代码块中的变量重名会出现什么状况? package main import "fmt" var block = "package" func main() { block := "f…
    一.闭包(Closure)模糊概述 之前总觉得闭包(Closure)很抽象而且难理解,百度一下"闭包"名词,百度的解释是:“闭包是指可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)” 看了半天,也没有看懂闭包是什么?以下将是我对闭包(Closure)的理解,如有错误欢迎指出     二.普通函数.变量访问作用域 以上普通函数的调用fn被调用了两次,变量b却没有累加?? 对于函数f1变量b…
ECMAScript 不介意传进来多少个参数,也不介意传进来的参数类型.     理解参数:      命名的参数只提供便利,不是必需的.     ECMAScript 的变量包含两种不同的数据类型的值.分别是 简单的数据构成的基本数据型值,不能给基本型值添加属性:           var name = "kevin";           name.age = 27;           console.log(name.age);     //undefined 多个值构成的对…
<html> <head> <title>函数提升</title> <script language="javascript" type="text/javascript"> //在全局对象中声明两个全局函数,反模式 function foo() { alert("global foo"); } function bar() { alert("global bar")…
一.函数基本理论 function compare(val1,val2){ return val1 - val2; }var result = compare(5,10); 1,函数的定义没什么意义,之后创建一个字符串,就是函数代码 2,函数执行(被调用)的时候发生的事情:(以上面的代码为例) 创建一个执行环境execution context ,该对象有一个特殊的属性叫[scope chain] 作用域链,属性的值是一个类数组对象,如上图所示,第一个包含了,arguments,val1和val…
javascript函数跟变量的声明.作用域这些概念网上都已经讲烂了. 这里写个博客,也相当于做个笔记. 变量声明 首先看个例子: var globalVar = "gv"; function fc() { console.log(globalVar); var globalVar = "lv"; console.log(globalVar); } fc(); 这个例子输出: undefined "lv" 为什么会输出这样的信息呢? javasc…
说来惭愧,4个多月未更新了.4月份以后就开始忙起来了,论文.毕设.毕业旅行等七七八八的事情占据了很多时间,毕业之后开始忙碌的工作,这期间一直想写博客,但是一直没能静下心写.这段时间在看<JavaScript设计模式与开发实践>,感觉很不错,受益匪浅. 这篇文章将围绕高阶函数是什么.高阶函数有什么作用等几个方面来进行介绍. 什么是高阶函数? 高阶函数是指至少满足下列条件之一的函数: 1.函数可以作为参数被传递 2.函数可以作为返回值输出 1.函数作为参数传递,这样我们可以抽离出一部分容易变化的业…
理解和使用 JavaScript 中的回调函数 标签: 回调函数指针js 2014-11-25 01:20 11506人阅读 评论(4) 收藏 举报  分类: JavaScript(4)    目录(?)[+]  实质: 函数作为参数传入解决回调. 原文:http://javascriptissexy.com/   在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为…
定义 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 具体来说,就是保证有些对象有且只有一个,比如线程池.全局缓存.浏览器中的window 对象等.在js中单例模式用途很广,比如登录悬浮窗,我希望无论我点击多少次这个浮窗都只会被创建一次,这里就可以用单例模式. 1.实现单例模式 思路:用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象:如果否就创建出那个对象. var Singleton = function( name…
简介 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作为返回值,就需要通过函数指针(function pointer).代理(delegate)等特殊的方式周折一番. 而在JavaScript世界中函数却是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值.传参.返回,这样的函数也称之为第一级函数(First-cla…
使用VS Code开发TypeScript--定义变量推荐使用let 目录 作用域规则 JavaScript的严格模式 let与var的区别 作用域规则 一直以来我们都是通过var关键字定义JavaScript变量. var a = 10; 大家都能理解,这里定义了一个名为a值为10的变量. 我们也可以在函数内部定义变量: function f() { var message = "Hello, world!"; return message; } 并且我们也可以在其它函数内部访问相同…
定义: 保证一个对象(类)仅有一个实例,并提供一个访问它的全局访问点: 实现原理: 利用闭包来保持对一个局部变量的引用,这个变量保存着首次创建的唯一的实例; 主要用于: 全局缓存.登录浮窗等只需要唯一一个实例的时候: Part1.命名空间的管理员开发中经常会遇到不同的人定义的变量使用的单词可能会重复,此时就需要用到命名空间来约束每个人定义的变量来解决这类问题.比如小明的代码,他可以定义一个xiaoZhang的空间.同样,我们平时使用的vue定义use()方法我们可以通过vue.use()来访问…
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之间的内容按照数学公式进行排版,从而导致评论区格式混乱.如果大家的评论中用到了$,但是又不是为了使用数学公式,就请使用\$转义一下,谢谢. 想从头阅读该系列吗?下面是传送门: Linux 桌面玩家指南:01. 玩转 Linux 系统的方法论 Linux 桌面玩家指南:02. 以最简洁的方式打造实用的…
JavaScript中任何库与框架设计的第一个要点就是解决命名空间与变量污染的问题.jQuery就是利用了JavaScript函数作用域的特性,采用自执行函数包裹了自身的方法来解决这个问题.从jQuery不同的版本中可以看出它的自执行函数有如下两种写法: // 写法一 (function(window, factory) { factory(window) }(this, function() { return function() { //jQuery的调用 } })); // 其实写法一可以…
匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function() { alert('hello'); })(); 这段代码的执行效果就是在页面再载入时弹出:"hello" 是什么促使它自动执行的?,来看下面的代码 // 在传统写法上去掉小括号,并在前面加上运算符 ~,!,+,- ~function(){ alert('hello'); }(); !function(){ aler…
JavaScript 可算是世界上最流行的编程语言,它曾被 Web 开发设计师贴上噩梦的标签,虽然真正的噩梦其实是 DOM API,这个被大量的开发与设计师随手拈来增强他们的 Web 前端的脚本语言,如今越来越被重视,虽则如此,JavaScript 仍然拥有很多让人费解的东西. 1. 它以 Java 命名,但并不是 Java 它最初叫 Mocha, 接着改名为 LiveScript,最后才确定命名为 JavaScript,根据历史记录,Java 的命名与 Netscape 和 Sun 之间的合作…
发布-订阅模式,也叫观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. 在JavaScript开发中,我们一般用事件模型来替代传统的观察者模式. 书里的现实例子 小明最近看上了一套房子,到了售楼处之后才被告知,该楼盘的房子早已售罄.好在售楼MM告诉小明,不久后还有一些尾盘推出,开发商正在办理相关手续,手续办好后便可以购买.但到底是什么时候,目前还没有人能够知道. 于是小明记下了售楼处的电话,以后每天都会打电话过去询问是不是已经到了购买时间.…