标签: scope

如何使用Emacs Lisp动态范围?

我之前学过Clojure,非常喜欢这门语言.我也喜欢Emacs,并用Emacs Lisp攻击了一些简单的东西.有一件事使我无法在精神上做任何与Elisp有关的事情.这是动态范围的概念.我只是害怕它,因为它对我来说太陌生,闻起来像半全局变量.

因此,对于变量声明,我不知道哪些事情是安全的,哪些是危险的.根据我的理解,使用setq设置的变量属于动态范围(是吗?)让变量怎么样?在某个地方我读过,让你可以做一些简单的词法范围,但在其他地方我读过,让vars也是动态范围的.

我最担心的是我的代码(使用setq或let)意外地从我调用的平台或第三方代码中破坏了一些变量,或者在调用之后我的局部变量意外地搞砸了.我怎么能避免这个?

是否有一些简单的经验法则我可以遵循并确切地知道范围发生了什么,而不会被一些奇怪的,难以调试的方式咬住?

lisp emacs scope elisp

53
推荐指数
7
解决办法
5658
查看次数

如何在AngularJS控制器中获取当前作用域dom-element?

我有一个outerItems列表.在每个outerItem中,我有一个innerItems列表.它们是动态排序的.

当鼠标光标指向innerItems之一时,我必须在该innerItem元素的正上方显示弹出窗口.

Popup div是body的孩子,因为我不希望每个innerItem都有一个单独的弹出窗口.

我看到它的方式 - 在ng-mouseover我调用将左/顶属性设置为我绝对定位的弹出窗口的函数.因此,对于每个innerItems,我想调用jQuery .offset()方法,它从页面的左上角给出左/上值.

那么我怎样才能获得当前范围元素的jQuery对象?或者,如果我选择了错误的方式

javascript jquery dom scope angularjs

53
推荐指数
2
解决办法
11万
查看次数

要求新/隔离范围的多个指令[myPopup,myDraggable]

我为对话框(myPopup)写了一个指令,另一个用于拖动这个对话框(myDraggable),但我总是得到错误:

要求新/隔离范围的多个指令[myPopup,myDraggable]

这是一个Plunker:http://plnkr.co/edit/kMQ0hK5RnVw5xOBdDq5P?p = preview

我能做什么?

JS代码:

var app = angular.module('myApp', []);

function myController($scope) {
    $scope.isDraggable = true;
}


app.directive('myPopup', [
    function () {
        "use strict";

        return {
            restrict: 'E',
            replace: true,
            transclude: true,
            template: '<div my-draggable="draggable"class="dialog"><div class="title">{{title}}</div><div class="content" ng-transclude></div></div>',
            scope: {
                title: '@?dialogTitle',
                draggable: '@?isDraggable',
                width: '@?width',
                height: '@?height',
            },
            controller: function ($scope) {
                // Some code
            },
            link: function (scope, element, attr) {
                if (scope.width) {
                    element.css('width', scope.width);
                }

                if (scope.height) {
                    element.css('height', scope.height);
                }                    
            } …
Run Code Online (Sandbox Code Playgroud)

scope angularjs angularjs-directive

52
推荐指数
5
解决办法
8万
查看次数

python-3.6中带有'f'前缀的字符串

我正在尝试使用Python 3.6.通过新代码,我偶然发现了这个新语法:

f"My formatting string!"
Run Code Online (Sandbox Code Playgroud)

看来我们可以这样做:

>>> name = "George"
>>> print(f"My cool string is called {name}.")
My cool string is called George.
Run Code Online (Sandbox Code Playgroud)

任何人都可以对这个内部运作有所了解吗?特别是f前缀字符串可以采用的变量范围是多少?

python scope string-formatting python-3.6 f-string

52
推荐指数
3
解决办法
2万
查看次数

如何从$ .getJSON函数返回变量

我想返回StudentId到外的其他地方使用范围$.getJSON()

j.getJSON(url, data, function(result)
{
    var studentId = result.Something;
});

//use studentId here
Run Code Online (Sandbox Code Playgroud)

我猜想这是与范围有关,但它似乎不相同的方式工作C#

javascript ajax jquery scope return-value

51
推荐指数
3
解决办法
9万
查看次数

如何在Java中创建静态局部变量?

我读过Java不支持static本地变量,不像C/C++.现在,如果我想用一个局部变量编写一个函数,其值应该在函数调用之间保持不变,我该怎么做?
我应该使用实例变量吗?

java static scope

51
推荐指数
3
解决办法
8万
查看次数

为什么我的HelloWorld函数未在此范围内声明?

#include <iostream>

using namespace std;

int main()
{
    HelloWorld();
    return 0;
}

void HelloWorld()
{
    cout << "Hello, World" << endl;
}
Run Code Online (Sandbox Code Playgroud)

我用g ++得到以下编译错误:

l1.cpp: In function 'int main()':
l1.cpp:5:15: error: 'HelloWorld' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

c++ scope

51
推荐指数
6
解决办法
6万
查看次数

我可以将一个变量从JSP scriptlet传递到JSTL,但不能从JSTL传递到JSP scriptlet而不会出错

以下代码导致错误:

 <c:set var="test" value="test1"/>
 <%
   String resp = "abc";
   resp = resp + test;
   pageContext.setAttribute("resp", resp);
 %>
 <c:out value="${resp}"/>
Run Code Online (Sandbox Code Playgroud)

错误说

"error a line 4: unknown symbol 'test'".
Run Code Online (Sandbox Code Playgroud)

如何test从JSTL代码传递到JSP scriptlet?

java jsp scope jstl scriptlet

50
推荐指数
2
解决办法
11万
查看次数

我的javascript范围有什么问题?

2每次都会发出以下警报.

function timer() {
    for (var i = 0; i < 3; ++i) {
        var j = i;
        setTimeout(function () {
            alert(j);
        }, 1000);
    }
}

timer();
Run Code Online (Sandbox Code Playgroud)

不应该var j = i;设置j进入setTimeout的个别范围?

如果我这样做:

function timer() {
    for (var i = 0; i < 3; ++i) {
        (function (j) {
            setTimeout(function () {
                alert(j);
            }, 1000);
        })(i);
    }
}

timer();
Run Code Online (Sandbox Code Playgroud)

它提醒0,1,2像它应该.

有什么我想念的吗?

javascript closures scope

50
推荐指数
2
解决办法
1079
查看次数

JavaScript中的'let'和'var'之间是否存在性能差异?

这两个关键字在范围界定方面的差异已经在这里进行了彻底的讨论,但我想知道两者之间是否存在任何性能差异,如果是这样,它是否可以忽略不计,或者在什么时候会变得显着?

javascript performance scope

50
推荐指数
3
解决办法
2万
查看次数